设计模式读书笔记-1代理模式Proxy(1)
1.定义
为其他对象提供一种代理以控制对这个对象的访问。
2.类图
3.比较
3.1动态代理和静态代理
静态代理实现的时候,在Subject接口上定义很多的方法,代理类里面自然也要实现很多方法。
动态代理实现的时候,虽然Subject接口上定义了很多方法,但是动态代理类始终只有一个invoke方法。这样,当Subject接口发生变化的时候,动态代理的接口就不需要跟着变化了。
3.2代理模式与适配器模式
相似性:它们都为一个对象提供间接性的访问,而且都是从自身以外的一个接口向这个对象转发请求。
不同性:功能上,两个模式是不一样的。适配器模式主要用来解决接口之间不匹配的问题,它通常是为所适配的对象提供一个不同的接口;而代理模式会实现和目标对象相同的接口。
3.3代理模式与装饰模式
相似性:在实现上相似,都是在转调其他对象的前后执行一定的功能。
不同性:目的与功能不一样。装饰模式的目的是为了让你不声称子类就可以给对象添加职责,也就是说为了动态的增加功能。而代理模式的主要目的是控制对对象的访问。
4.应用
4.1远程代理
4.1.1 rmi基础
a.创建远程接口
c.GumballMachineTestDrive
d.GumballMonitor
e.GumballMonitorTestDrive
f.执行过程
HeadFirstDesignPatterns_code102507\HF_DP\bin>rmiregistry
java GumballMachineTestDrive localhost 100
java GumballMonitorTestDrive localhost
4.2虚拟代理
a.ImageComponent
a.PersonBean
5.参考资料
《Head First Design Pattern》
《大话设计模式》