diff --git a/notes/pics/dp-proxy.png b/notes/pics/dp-proxy.png new file mode 100644 index 00000000..14d96eb2 Binary files /dev/null and b/notes/pics/dp-proxy.png differ diff --git a/notes/设计模式 - 代理.md b/notes/设计模式 - 代理.md index 8e1b123d..bfecfed8 100644 --- a/notes/设计模式 - 代理.md +++ b/notes/设计模式 - 代理.md @@ -1,11 +1,9 @@ ## 代理(Proxy) -### Intent - +### 意图 控制对其它对象的访问。 -### Class Diagram - +### 类图 代理有以下四类: - 远程代理(Remote Proxy):控制对远程对象(不同地址空间)的访问,它负责将请求及其参数进行编码,并向不同地址空间中的对象发送已经编码的请求。 @@ -13,10 +11,9 @@ - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

- -### Implementation +

+### 实现 以下是一个虚拟代理的实现,模拟了图片延迟加载的情况下使用与图片大小相等的临时内容去替换原始图片,直到图片加载完成才将图片显示出来。 ```java @@ -98,7 +95,11 @@ public class ImageViewer { } ``` -### JDK - +### JDK 中的应用 - java.lang.reflect.Proxy - RMI + +## 参考资料 + +- 弗里曼. Head First 设计模式 [M]. 中国电力出版社, 2007. +- Gamma E. 设计模式: 可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.