接上回书,这次我们说说结构型模式。结构型模式主要用于描述如何组合类和对象以获得更大的结构。
装饰模式(Decorator)
是什么?
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。就增加功能来说,装饰模式比生成子类更为灵活。顾名思义,装饰模式就是为了给对象添上装饰,比如给一个裸体模特穿上衣服。
结构图?
使用场景?
为某个现有对象动态地添加一个新的功能或职责时
好处?
①把类中的装饰功能从类中移除,简化了原有的类②有效地把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。
和建造者模式的区别?
建造者模式要求建造的过程必须是稳定的,而装饰模式的过程是不稳定的。小编举个栗子不知道是否贴切:建造者模式就是盖房子,其步骤是一定的,比如只有先盖墙才能放楼板;而装饰模式的步骤就没那么重要了,比如我是先铺厕所的地板砖还是先铺卧室的,没关系。
代理模式(Proxy)
是什么?
为其他对象提供一种代理以控制对这个对象的访问。代理是啥啊?代理又叫委托。比如小编我想给读者你送一封情书,那得请一个咱俩都认识的人帮忙吧,如果我直接送,显着多生硬。而这个“中间人”就是代理。
结构图?
分类?
①远程代理:为一个对象在不同的地址空间提供局部代表②虚拟代理:根据需要创建开销很大的对象③安全代理:用来控制真实对象访问时的权限④职能指引:当调用真实的对象时,代理处理另外一些事
外观模式(Facade)
是什么?
又叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
结构图?
使用场景?
当要为访问一系列复杂的子系统提供一个简单入口时等(这一点不是很懂)
优点?
①实现了子系统与客户端之间的松耦合关系②客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易
适配器模式(Adapter)
是什么?
将一个类的接口转换成客户希望的另外一个接口,解决了因接口不兼容而不能一起工作的问题。
结构图?
使用场景?
①系统需要使用现有的类,而这些类的接口不符合系统的需要②想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类③需要一个统一的输出接口,而输入端的类型不可预知
小结
未完待续