1 适配器模式Adapter
类似变压器 把被适配的类的API转换为目标类的API
例:使用变压器使110V的电器可以在220V的插座上使用。
2 装饰模式Decorator
目的是扩展一个对象的功能
调用方法:
发票 发票实体 = new 发票头尾部1(new 发票主体())
发票实体.print();
使用这种方式一层层给发票主体添加功能。
3 桥梁模式Bridge
一个很好的解决类爆炸问题的模式。
4 代理模式Proxy
代理模式与装饰模式类似,都是用来增强对象功能的模式。
代理模式体现了AOP的编程思想,Java对动态代理做了很好的支持。
常用场景:
- 使用某功能前对用户进行身份检查
- 加载一个模块前,显示“正在加载”信息
5 合成模式Composite
将对象组合成树形结构以表示“部分-整体”的层次结构。
安全式:只有文件夹有添加和删除子文件夹或文件的权利。
透明式:树枝和树叶接口一致,均可以进行添加和删除。
6 享元模式Flyweight
运用共享技术有效地支持大量细粒度对象。
文本编辑器中每一个字母是一个享元对象,内部状态是这个字母,是被共享的,外部状态是这个字母在文本中的位置和字体、大小等信息。
Java中常量池(constant pool)就使用了享元模式,即如果两个常量内容一致,他们会共享一个地址。比如定义String s1=“a”, String s2=“a”,s1==s2。但注意常量池是在编译期被确定的,如果s2在运行时才被赋值为"a",s1 != s2。可以使用String的intern()方法在运行时使用和扩充常量池。
7 门面模式Facade
为一复杂子系统定义一个高层接口,使这一子系统更加容易使用。