`
huobengluantiao8
  • 浏览: 1028786 次
文章分类
社区版块
存档分类
最新评论

《GOF设计模式》结构型模式的理解与思考

 
阅读更多

在GOF《设计模式》中,对结构型设计模式进行了分析和七种具体模式的整理,通过学习、实践和思考之后,我发现似乎可以对结构型模式进行更深入的概括,下面把我的理解描述如下,希望各位同样对设计模式感兴趣的朋友批评指正。
结构型设计模式三大主题:统一、概括、分离。
在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对象,从而可以在中间提供一些辅助的功能和服务;
分享到:
评论

相关推荐

    设计模式 GOF 23

    设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活可复用的软件而长时间进行的...

    设计模式精解-GoF 23种设计模式解析

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码 目 录 引 言 0.1 设计模式解析(总序) 0.2 设计模式解析后记 0.3 与作者联系 1 创建型模式 1.1 Factory模式 1.2 AbstactFactory模式 1.3 Singleton...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    设计模式精解-GoF 23种设计模式解析附C++实现源码 目 录 0 引言.........................................................................................................................................

    GoF 设计模式_思维导图_总结.xmind

    基于 GoF 设计模式的思维导图总结资料: 设计原则、三大类型:创建型、结构性、行为型。 UML 的基础定义描述。

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码.pdf

    设计模式精解- GoF 23 种设计模式解析附 C++实现源码 目 录 0 引言 ...........................................................................................................................................

    GOF设计模式可复用面向对象软件的基础(中文版)

    设计模式可复用面向对象软件的基础 内容简介:本书设计实例从面向对象的设计中精选出23个设计模式... 第4章 结构型模式 第5章 行为模式 第6章 结论 附录A 词汇表 附录B 图示符号指南 附录C 基本类 参考文献

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码.rar

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码 目 录 0 引言 ............................................................................................................................................

    设计模式精解(GoF 23种设计解析附C++实现源码)

    2 结构型模式.................................................................................................................................26 2.1 Bridge模式.............................................

    设计模式精解-GoF-23种设计模式解析

    设计模式精解-GoF-23种设计模式解析,C++源码精解,创建型模式5种,结构性模式7种,行为模式11种。面向对象系统的分析和设计实际上追求的就是两点,一是高内聚(Cohesion),而是低耦合(Coupling)

    设计模式GOF23(chm格式)

    GOF23 设计模式chm 速查手册:包括创建型、结构型、行为型

    设计模式精解-GoF 23种设计模式解析.pdf

    23种设计模式的解析,包括创建型模式、结构型模式、行为模式三大类,对设计模式的初学者很有帮助

    设计模式所有实验及实验报告及代码.zip

    2GoF 的 23 种设计模式 3UML中的类图及类图之间的关系 4开闭原则 5里氏替换原则 6依赖倒置原则 7单一职责原则 8接口隔离原则 9迪米特法则 10合成复用原则 11创建型模式的特点和分类 12单例模式 13原型模式 14工厂...

    设计模式部分习题集锦,程序员必看设计模式

    结构型设计模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,轻量级模式,代理模式; 行为性设计模式:责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,...

    设计模式精解-GoF 23 种设计模式解析

    2 结构型模式...........................................26 2.1 Bridge模式..................................26 2.2 Adapter模式................................31 2.3 Decorator模式........................

    gof:GoF的23种设计模式

    GoF 设计模式GoF所提出的23种设计模式主要基于以下面向对象设计原则:对接口编程而不是对实现编程优先使用对象组合而不是继承23种设计模式分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural ...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    创建型模式 结构型模式 行为模式 懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。

    23种设计模式gof23.rar

    这个案例主要包括以下设计模式 创建型模式:单例模式;工厂模式;创建者模式;原型模式 结构型模式:适配器模式;桥接模式;代理模式

    软件设计模式-java.pdf

    全书共9章,内容包括设计模式基础、创建型设计模式(共5种)、结构型设计模式(共7种)、行为型设计模式(共11种)、设计模式实验指导。每章包括教学目标、重点内容、模式的定义与特点、模式的结构与实现、模式的...

    C++设计模式电子书

    设计模式是面向对象思想的集大成,GOF在其经典著作中总结了23种设计模式,又可分为:创建型、结构型和行为型3个大类。对于软件设计者来说,一般的过程就是在熟练掌握语言背景的基础上,了解类库的大致框架和常用的...

    ASP.NET设计模式-杨明军译(源码)

    那些以前已经体验过设计模式的读者可能希望跳过本书的第ⅰ部分,这部分介绍了gof提出的设计模式以及其他常见设计原则,包括s.o.l.i.d原则和martinfowler的企业设计模式。所有的代码示例均采用c#语言编写,但这些概念...

Global site tag (gtag.js) - Google Analytics