java 代理模式 静态代理和动态代理

时间:2021-06-15 19:34:18

每一次看完一本书,或者学习过每一个知识点,很快就会忘记了,所以从今天开始要把所学习到的内容记录下来,包括文章的内容要完整,结构清晰,排版简明。2017/8/14 从今天就开始了。
代理模式
顾名思义就是对一个对象的代理,就是代理对象去代理一个对象去执行某些方法。

代理模式根据代理对象创建时期分为静态代理,动态代理。
静态代理:代理对象编译时期生成,
动态代理:代理对象在程序运行期间通过反射机制生成。
静态代理
下面就是一个静态代理的例子。从例子直观上看感觉是繁琐了一步,工厂类直接可以完成的动作,为什么要加上一个代理再去执行呢?
个人的理解 :既然用到代理类,就是说工厂类的方法不能达到自己的需求,而且还不能去更改工厂类的方法和属性,所以从外面封装一层满足自己的需求,也同时达到了解耦的目的。就是每个层次只负责每个层次的方法。

/**
* 销售接口
* @version 2017年8月14日 上午10:05:03
*/

public interface Sell {

/*销售*/
void toSell(String content);

}
/**
* 工厂销售类
* @version 2017年8月14日 上午10:06:25
*/

public class FactorySell implements Sell{

@Override
public void toSell(String content) {
System.out.println("工厂销售:" + content);
}

}
public class ProxySell implements Sell{

private FactorySell factory;
public ProxySell(FactorySell factory){
this.factory = factory;
}

@Override
public void toSell(String content) {
//可以实现自己额外的需求
factory.toSell(content);
}

public static void main(String[] args) {
ProxySell proxy = new ProxySell(new FactorySell());
proxy.toSell("高科技产品");
}

}

动态代理