GOF之结构型模式Ⅱ(重点)

装饰器模式 (decorater(包装器模式 Wrapper))

动态的为对象增加一个新的功能
优点:使用对象的关联关系取代继承关系,降低系统的耦合度,避免类型体系的快速膨胀
缺点:会产生很多小对象,大量小对象占用内存,在一定程度上影响性能

组件:
Component:抽象构件,真实对象和装饰对象所相同的接口
ConcreteComponent:具体构件角色
Decorator:装饰角色,持有一个抽象构件的引用
ConcreteDecorator:具体装饰角色,负责给构件对象添加新的“装饰”
实例:IO输入输出流,Swing包界面构件,Servlet中提供request对象HttpServletRequestWrapper
UML:
在这里插入图片描述
PS:装饰器模式和桥接模式区别:
桥接模式是对对象自身现有机制沿着多个维度变化,是既有部分不稳定;
装饰器模式是增加新的功能。

外观模式 (Facade)

迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用
将现有接口功能进行组合封装,对外界提供最少的接口

享元模式 FlyWeight

特点:
内存属于稀缺资源,多个完全相同或相似的对象,共同占用内存
以共享的方式高效的支持大量细粒度对象的重用
极大的减少了内存中对象的数量,运行时间变长,以时间换取空间

核心关键 :内部状态:可以共享,不会随环境变化而改变
外部状态:不可共享,会随环境变化而随之改变

组件:
FlyweightFactory:享元工厂类,创建并管理享元对象,一般设计为键值对
FlyWeight:抽象享元类,申明公共方法,可提供内部状态,设置外部状态
ConcreteFlyWeight:具体享元类,
UnsharedConcreteFlyWeight:非共享享元类
example:线程池,数据库连接池,String类的设计
UML:
在这里插入图片描述

发布了82 篇原创文章 · 获赞 1 · 访问量 1475

猜你喜欢

转载自blog.csdn.net/qq_41891805/article/details/104709160