对结构型设计模式的理解

来源:互联网 发布:青岛seo关键词报价 编辑:程序博客网 时间:2024/06/02 01:49

在Gof设计模式中,对设计模式的主要分类为:1)创建型、2)结构型、3)行为型。创建型设计模式抽象了对象的实例化过程;结构型设计模式涉及到如何组合类和对象以获得更大的结构;行为型设计模式描述算法和对象间职责的分配。
 
那么,结构型设计模式到底如何对类和对象进行组合,以获得更大的结构,组合的指引是什么呢?Adapter/Bridge/…/Proxy七种模式只是结构型设计模式的七个实例,这七个实例的核心主题是什么呢?
通过分析,我觉得可以将结构型设计模式的主题用三个词概括:1)统一、2)概括、和3)分离。
 
1)统一:达到一致
“统一”描述了对象组合的一个主题,通过统一性便于客户使用和扩展,在Gof七种结构型设计模式中,可以归入该主题的有Adapter(适配器)、Composite(组合)模式。
 
Adapter通过将一个类的接口转换为客户希望的另一个接口,即统一Adaptee类接口到Target接口,以便于客户Client使用。
 
Composite模式统一基元对象和组合对象,从而建立一个“部分——整体”的类层次结构。通过这个结构,客户Client可以一致的使用各种类型的组件,包括基元组件和组合组件;此外对于新的组件,无论是新的基元还是新的组合组件,都可以自然的融入到该层次结构中,从而增强了可扩展性。
 
2)概括:提高抽象
“概括”也描述了对象组合的一个主题,它对一些对象进行抽象和提取,然后提供给客户使用,这样既便于客户使用,也便于对底层的被概括的对象进行扩展和维护。在Gof七种结构型设计模式中,概括为该主题的有Facade(外观)模式。
 
Facade模式为子系统中的一组对象提供一个高层接口,这个高层接口使得这个子系统更容易使用和维护。
 
3)分离:降低耦合便于扩展
分离可以说是很多模式的一个主题,不仅结构型模式,创建型/行为型设计模式中也有大量的以分离为主题的模式。通过分离可以解耦关联、增加各部分的独立性等等。在Gof七种结构型设计模式中,概括为该主题的有Bridge(桥接)、Decorator(装饰器)、Flyweight(享元)、和Proxy(代理)模式。
 
Bridge模式分离了抽象部分和实现部分,使两部分都可以独立的变化;
 
Decorator模式分离了被装饰的对象和各种用于装饰的状态和职责,从而可以在运行时灵活地对组件对象进行各种装饰;
 
Flyweight模式分离了大量小对象中的运行环境状态信息,从而使这些小对象可以共享;
 
Proxy模式通过提供代理,分离了客户Client和Subject对象,从而可以在中间提供一些辅助的功能和服务;

原创粉丝点击