设计模式总结(三)
【前言】 |
上次给大家总结了一下创建型设计模式,那么今天就来谈一下另外的一大类设计模式——结构型设计模式。
【主要内容】 |
本次结构型设计模式主要来谈一下一下几个模式:
【适配器模式】 |
定义:将一个类接口转换成用户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作了。
举例:就举设计模式课本上的例子,外籍NBA球员如果不懂中文怎么去知道教练是怎么去知道教练安排的任务呢?这时候需要一个翻译者,这个翻译者就是适配器。
UML图:
优点:
1:将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无需修改原有结构。
2:增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对于客户端类而言是透明的,而且提高了适配者的复用性,同一适配者类可以在多个不同的系统中复用。
3:灵活性和扩展性都非常好,通过使用配置文件,可以很方便的更换适配器,也可以在不修改原有代码的基础上 增加新的适配器,完全复合开闭原则。
缺点:
1:一次最多只能适配一个适配者类,不能同时适配多个适配者。
2:适配者类不能为最终类,在C#中不能为sealed类
3:目标抽象类只能为接口,不能为类,其使用有一定的局限性。
【装饰模式】 |
定义:动态的给一个对象添加额外的职责,就增加功能而言比生成子类更加灵活。
举例:就像定义所说的就是给对象添加额外的职责,我们可以把他当做是功能。就举课本上的例子,本来就是各种各样的衣服这个对象,可是把他们放到一起就添加了一个装饰人的一个功能。
UML图:
优点:增加功能比生成子类更加灵活。
【桥接模式】 |
定义:将抽象部分与它的实现部分分离,使他们可以独立地变化。
举例:本质上就是将耦合度降低。本次还是举课本上的例子:按手机品牌进行分类实现。
UML图:
【组合模式】 |
定义:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
下面举一个公司的例子来说明:
UML图:
【享元模式】 |
定义:运用共享技术有效地支持大量细粒度的对象。
举例:这个就引用崔晓鸿同志的例子:不管是小米5还是小米6,他们都可以有一个统一的名,那就是小米。小米是一个可以共享的内部状态,但是小米5,小米6就是不能共享的内部状态了。
UML图:
【代理模式】 |
定义:为其他对象提供一种代理以控制对对象的访问。
举例:这种代理我感觉就像咱们生活中的代理商那样,就是商品的代理。
UML图:
【外观模式】 |
定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
举例:去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。
UML图:
【总结】 |
现在了解的还是比较浅,等了解深了再去多做补充,如果不准确的地方还请大家指出。3ks__