知识卡片

代理模式与AOP及装饰模式在JDK中的应用广度差异

普通读书笔记卡 · 1986.g

内容

[[代理模式与装饰模式结构相同但意图不同]]在工程中的普及程度差距明显:代理模式 随处可见,用到极致就是AOP——Spring靠代理和反射在方法调用前后插入日志、事务等横切 逻辑;装饰模式用得少,但JDK的java.io.*大量使用,如DataOutputStream包装 FileOutputStream逐层叠加处理能力。发散:”使用频率低”不等于”不重要”,只是装饰模式 适用场景比代理模式窄。

参考来源

- 位置:《设计模式之禅(第2版)》第31章《结构类模式大PK》31.1.3节(源文件:_epub-src/text/part0140.html) - 结论依据:原文说明"代理模式使用到极致开发就是AOP,这是各位采用Spring架构开发必然要使用到的技术,它就是使用了代理和反射的技术",并举例"在JDK的java.io.*包中就大量使用装饰模式……使用DataOutputStream封装了一个FileOutputStream,以方便进行输出流处理"。 - 原始内容:代理模式使用到极致开发就是AOP,这是各位采用Spring架构开发必然要使用到的技术,它就是使用了代理和反射的技术……代理模式在Java的开发中俯拾皆是……而装饰模式是一个比较拘谨的模式,在实际应用中接触比较少,但是也有不少框架项目使用了装饰模式,例如在JDK的java.io.*包中就大量使用装饰模式……OutputStream out = new DataOutputStream(new FileOutputStream("test.txt")),这是装饰模式的一个典型应用。