`
ponlya
  • 浏览: 165383 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

设计模式-原型-代理

 
阅读更多

原型

拷贝对象

 

public class ProImp   {

	.......	
	/**
	 * 克隆一个自己,因没有属性,不用复制值
	 */
	public Object clone(){ 
		ProImp a  =  new ProImp(); 
                a.xxx = xxx;
		return a;
	}
}

Ojbect的 clone()每次克隆获取的是同一个实例。指向的是同一内存空间。
clone一个对象,一般是有值的,但是new一个对象是不一定有值
代理

 

1+N hibernate的经典问题。

代理用来控制对象的访。

自己实现的代理常叫静态代理,这样的实现在接口变化时,修改较多。 JDK支持动态代理。JAVA的动态代理目前依靠代理接口InvocationHandler:反射+动态生成class技术,来动态生成被代理的接口实现对象。 cglib等第三方工具包也提供了。

JDK

 

public class DynamicProxy implements InvocationHandler {

	private Subject sb = null;
	
	public DynamicProxy(Subject sb){
		this.sb = sb;
	}
	
	public Subject getProxyInterface(RealSubject rs){
		//设置被代理对象,方便invoke操作
		this.sb = rs ;
		//将真正的订单对象和动态关联起来
		Subject sub = (Subject)Proxy.newProxyInstance(
				RealSubject.class.getClassLoader(),
				RealSubject.class.getInterfaces(), 
				this);
		return sub;
	}
	
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		//if(method.getName().startsWith(""))
		
		return method.invoke(sb, args);
	}

}

RealSubject rs = new RealSubject();
DynamicProxy dp = new DynamicProxy(rs);
Subject sb = dp.getProxyInterface(rs);
sb.doSomeThing();

static
public class ProxySubject implements Subject {

	private Subject real = null; // 持有被代理的具体的目标对象

	public ProxySubject(Subject sub) {// 构造方法传入被代理的目标对象
		real = sub;
	}

	public void doSomeThing() {
		// 可以在这里加些权限或者其它数据完整性的判断,如果通过则继续
		before(); // 有点像前置通知
		if (null != real)
			real.doSomeThing();
		end(); // 有点像后置通知
	}

	public void before() {
		System.out.println("in" + ProxySubject.class + " before() ");
	}

	public void end() {
		System.out.println("in" + ProxySubject.class + " end() ");
	}
}
 
 
 
 
 
分享到:
评论

相关推荐

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    C#23种设计模式样例代码和UML图

    C#23种设计模式样例代码和UML图等 创建型模式(抽象工厂模式、工厂方法模式、单例模式、建造者模式、原型模式); 行为型模式(策略模式、 迭代器模式、原型模式、职责链模式、 模板方法、 命令模式、 解释器模式、 ...

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

    Java设计模式----通俗易懂版

    Java设计模式是软件工程中的一种重要思想,它总结了在解决特定问题时,程序员们反复使用的一些最佳实践和解决方案。这个资源"Java设计模式----通俗易懂版"显然是一个专门针对初学者或需要深入理解设计模式的开发者...

    设计模式课件大全

    设计模式05-建造者、原型模式 设计模式06-适配器、桥接、组合模式 设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 ...

    软件设计模式--填空题+简答题(复习7).rar

    2. **设计模式分类**:设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代...

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    设计模式-华工课件 设计模式

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。华工(华南理工大学)的这门课程“设计模式”深入浅出地讲解了这一主题,旨在帮助开发者提高代码质量和可维护性。下面将详细...

    设计模式-2

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。设计模式并不是具体的代码或库,而是一种经验的总结,它描述了在特定上下文中如何进行设计决策以达到良好的...

    23种 设计模式---面向对象的基本原则

    设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,为软件开发提供了可复用的解决方案。在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计...

    《设计模式--基于C#的工程化实现及扩展》.(王翔).rar.rar

    本书涵盖了各种经典的设计模式,包括创建型模式(如单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式)、结构型模式(如适配器模式、桥接模式、装饰模式、组合模式、外观模式、代理模式、享元模式)以及行为...

    设计模式--可复用面向对象软件的基础

    ### 设计模式--可复用面向对象软件的基础 #### 一、概述 设计模式是软件工程领域的一个重要概念,指的是在特定场景下解决问题的最佳实践。《设计模式--可复用面向对象软件的基础》这本书由四位知名的面向对象软件...

    Java 中的设计模式 - jdon

    《Java中的设计模式 - jdon》是一本深入探讨Java编程中设计模式的电子书,它主要聚焦于如何在实际开发中应用和理解这些经典的设计原则和模式。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决常见...

    设计模式-可复用面向对象软件的基础

    《设计模式-可复用面向对象软件的基础》这本书是面向对象编程领域中的一部经典之作。设计模式,作为软件工程中的重要概念,是解决常见问题的成熟解决方案的模板,它在实践中被反复验证并广泛接受。这本书深入浅出地...

    JAVA设计模式-原则和23种设计模式归纳总结

    JAVA设计模式-原则和23种设计模式归纳总结 本资源主要介绍了JAVA设计模式的原则和23种设计模式的总结。设计模式是软件设计中的一种解决方案,能够使软件系统更加灵活、可维护和可扩展。本资源首先介绍了设计模式的...

    设计模式--java版.rar

    设计模式是软件工程中的一种最佳实践,它是在特定情境下为解决常见问题而形成的一套可复用的解决方案模板。Java作为广泛应用的编程语言,其设计模式的应用对于编写高效、可维护的代码至关重要。本资源“设计模式--...

    设计模式----Java

    ### 设计模式——Java #### 1. 前言 设计模式是在软件工程领域内广泛应用的一种编程思想,它能够帮助开发者解决常见的设计问题,并提高软件的灵活性、可复用性和可维护性。《Java实用系统开发指南》一书中的作者...

Global site tag (gtag.js) - Google Analytics