《设计模式》结构型模式
上篇博文写了创建型模式中的(工厂家族)。这次来介绍一下结构型模式。主要从各个模式的含义。优缺点,适用场合及结构图来了解结构型模式。
结构型模式包含有7种模式,适配器模式,外观模式,代理模式。桥接模式。享元模式,组合模式,装饰模式。
每一个模式各有优缺,孰优孰劣。请看下文。
1.适配器模式
定义:将一个类的接口转换成客户希望的另外一个接口。使得原本因为接口不兼容而不能一起工作的那些类能够一起工作。
结构图:
适用于:想要使用一个已存在的类。但接口和你的要求不同一时候
在软件开发后期或是维护时期,在两方都不太easy改动时
长处:让接口不同的类通过适配,协同工作。
2.外观模式
定义:为系统中的一组接口提供一个一致的界面,它定义一个高层接口。使得这一子系统更加easy使用。
结构图:
长处:对客户屏蔽了子系统组件。使得用户处理的对象数目降低。使系统用起来更easy。
实现了子系统与用户之间的松耦合。
适用于:当要为复杂子系统提供一个简单接口时
将不同的两个层分离。在层与层之间建立外观
3.代理模式
定义:为对象提供一种代理以控制对这个对象的訪问。
结构图:
长处:
职责清晰,真实的角色就是实现实际业务逻辑,不用关心其它费本职责的事务,通过后期的代理完毕一件完毕事务。结果就是变成简洁清晰。
代理对象能够在client和目标对象之间起到中介作用。
高扩展性。
适用于:
远程代理:为一个对象在不同地址空间提供局部代表。
虚拟代理:更具须要创建开销非常大的对象。
安全代理:用来控制真实对象訪问时的权限。
智能指引:当调用真实对象时,代理处理另外一些事。
三者VS:
1.代理VS外观。代理对象代表一个单一对象而外观对象代表一个子系统。
2.代理的客户对象无法直接訪问目标对象。
外观的客户对象可直接訪问子系统中的各个对象。
3.代理是一种原来对象的代表,其它须要与这个对象打交道的操作都和这个代表交涉。
适配器不须要虚构一个代表者,仅仅需为应付特定使用目的,将原来的类进行一些组合。
4.外观和适配都是对现有系统的封装。外观定义的是一个新系统。适配是复用原有的接口。
4.装饰模式:
定义;动态给对象加入一些额外的职责。
就添加功能来说,装饰模式相比生成子类更加灵活。
结构图:
长处:
装饰模式与集成关系的目的都是要扩展对象的功能。但装饰模式尅提供很多其它的灵活性,
通过使用不同的详细装饰类以及这些装饰类的排列组合,设计师可创造出非常多不同的行为组合。
缺点: 比继承更灵活的特性,也意味着添加了复杂性
使设计中出现很多类。若过度使用。会使程序变得复杂。
装饰者VS适配者
5.桥接模式
定义:将抽象部分和实现部分分离。使得它们都能够独立的变化。
结构图:
过度使用继承会导致类的结构过于复杂,难维护,扩展性差。
通过解耦这些不同的变化。把继承关系改为组合。使得两者各自独立变化(即合成聚合复用原则)。
6.组合模式
定义:将对象组合成树形结构以表示‘部分—总体’的层次结构。组合模式使得用户和组合对象的使用具有一致性。
结构图:
7.享元模式
定义:运用共享技术有效支持大量细粒度的对象。
结构图:
使用共享物件。用来尽可能的降低内存使用量及分享资讯给尽可能多的相似物件。
它适用于仅仅由于反复而导致使用无法令人接受的大量内存的大量物件。
学习继续ing。