spring十三种代理之 -代理模式

代理模式和装饰器模式特别的像,尤其体现在代码上

总结:1、加以控制 2 、添加功能

 以静态代理举例

一、静态代理

1创建接口

public interface Train {

	public void run2();
	
}

 2、实现接口的实体类

public class TrainCar extends Car implements Train{

@Override
public void run2() {
System.out.println("火车拉人");

}

}

  3、代理类

/**
 * 火车代理
 * @author tomca
 *
 */
//所有的都是来源于train ,这个代理类代理的是trainCar,以后trainCar的事情都会由TrainCarProxy来进行代理,你能在使用TrainCar这个类了,这个就是和装饰类最大区别
public class TrainCarProxy  implements Train{
	
	private TrainCar trainCar;
	
	public TrainCarProxy(TrainCar trainCar){
		this.trainCar = trainCar;
	}

	@Override
	public void run2() {
		// TODO Auto-generated method stub
		
	}

} 

总结: 

所有的都是来源于train ,这个代理类代理的是trainCar,以后trainCar的事情都会由TrainCarProxy来进行代理,你能在使用TrainCar这个类了,这个就是和装饰类最大区别

原有的类不会暴露出来,不会修改的原有的类可以加以保护。

缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.

原文地址:https://www.cnblogs.com/alomsc/p/12581448.html