六大原则 动态代理
2019-05-17 本文已影响0人
不存在的里皮
参考
- 六大原则
- 代理模式 介绍了三种代理:静态代理、Proxy、cglib
-
java 动态代理详解
- 介绍了动态代理具体案例
- 代理模式的三种角色:
- AppServiceImpl: 委托类
- InvokeHandler: 中介类
- 动态生成的class: 代理类, 由Proxy运行时动态生成
- 代理模式的三种角色是如何配合工作的:
- InvokeHandler通过持有委托类对象的引用的方式,与委托类建立静态代理联系。在此,InvokeHandler为中介类。
- 然后,通过动态生成类的方式,创建代理类,与中介类建立联系。
动态代理、装饰模式的实践
- 动态代理:mybatis的PooledConnection
- 装饰模式:java 过滤流FilterInputStream是装饰者,节点流则是被装饰者。
装饰者模式和代理模式的区别
代理模式中,中介类与委托类的关系,在编写中介类时就确定了。中介类会控制对委托类对象的访问,。
装饰者模式的装饰关系是在运行时才知道,比如下面的代码。
//装饰器模式
public class Decorator implements Component{
private Component component;
// 无法确定装饰的对象是哪个具体类
public Decorator(Component component){
this.component = component
}
public void operation(){
….
component.operation();
….
}
}
//装饰器的客户
public class Client{
public static void main(String[] args){
// 编程者指定了装饰者需要装饰的是哪一个类
Component component = new Decorator(new ConcreteComponent());
…
}
}