码迷,mamicode.com
首页 > 其他好文 > 详细

《设计模式》结构型模式1

时间:2014-05-25 22:53:03      阅读:395      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   c   tar   ext   

    

    上篇博文写了创建型模式中的(工厂家族)。这次来介绍一下结构型模式。主要从各个模式的含义,优缺点,适用场合及结构图来了解结构型模式。

  结构型模式包括有7种模式,适配器模式,外观模式,代理模式,桥接模式,享元模式,组合模式,装饰模式。每个模式各有优缺,孰优孰劣,请看下文。

1.适配器模式

    定义:将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    结构图:

           bubuko.com,布布扣

    适用于:想要使用一个已存在的类,但接口和你的要求不同时

    在软件开发后期或是维护时期,在双方都不太容易修改时

    优点:让接口不同的类通过适配,协同工作。

2.外观模式

    定义:为系统中的一组接口提供一个一致的界面,它定义一个高层接口,使得这一子系统更加容易使用。

    结构图:

           bubuko.com,布布扣

    优点:对客户屏蔽了子系统组件,使得用户处理的对象数目减少,使系统用起来更容易。

          实现了子系统与用户之间的松耦合,

    适用于:当要为复杂子系统提供一个简单接口时

          将不同的两个层分离,在层与层之间建立外观

3.代理模式

    定义:为对象提供一种代理以控制对这个对象的访问。

    结构图:

           bubuko.com,布布扣

     优点:

         职责清晰,真实的角色就是实现实际业务逻辑,不用关心其他费本职责的事务,通过后期的代理完成一件完成事务,结果就是变成简洁清晰。

         代理对象可以在客户端和目标对象之间起到中介作用。

         高扩展性。

   适用于:

      远程代理:为一个对象在不同地址空间提供局部代表。

           虚拟代理:更具需要创建开销很大的对象。

           安全代理:用来控制真实对象访问时的权限。

           智能指引:当调用真实对象时,代理处理另外一些事。 

三者VS:

  1.代理VS外观,代理对象代表一个单一对象而外观对象代表一个子系统。

  2.代理的客户对象无法直接访问目标对象。

   外观的客户对象可直接访问子系统中的各个对象。

  3.代理是一种原来对象的代表,其他需要与这个对象打交道的操作都和这个代表交涉。

   适配器不需要虚构一个代表者,只需为应付特定使用目的,将原来的类进行一些组合。 

  4.外观和适配都是对现有系统的封装。外观定义的是一个新系统,适配是复用原有的接口。


4.装饰模式:

     定义;动态给对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活。

     结构图:

          bubuko.com,布布扣


     优点:

          装饰模式与集成关系的目的都是要扩展对象的功能,但装饰模式尅提供更多的灵活性,

         通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可创造出很多不同的行为组合。

    缺点:  比继承更灵活的特性,也意味着增加了复杂性

            使设计中出现许多类,若过度使用,会使程序变得复杂。

装饰者VS适配者

这一点是在查询时了解到的,也在这里分享给大家:
1.关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此。装饰者模式主要是给被装饰者增加新职责的。
2.关于原接口:适配器模式是用新接口来调用原接口,原接口对新系统是不可见或者说不可用的。装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完成使用。(增加新接口的装饰者模式可以认为是其变种--“半透明”装饰者)
3.关于其包裹的对象:适配器是知道被适配者的详细情况的(就是那个类或那个接口)。装饰者只知道其接口是什么,至于其具体类型(是基类还是其他派生类)只有在运行期间才知道

5.桥接模式

   定义:将抽象部分和实现部分分离,使得它们都可以独立的变化。

结构图:

         bubuko.com,布布扣

过度使用继承会导致类的结构过于复杂,难维护,扩展性差。通过解耦这些不同的变化,把继承关系改为组合,使得两者各自独立变化(即合成聚合复用原则)。

6.组合模式

 定义:将对象组合成树形结构以表示‘部分—整体’的层次结构,组合模式使得用户和组合对象的使用具有一致性。

 结构图:

     bubuko.com,布布扣

7.享元模式

    定义:运用共享技术有效支持大量细粒度的对象。

    结构图:

          bubuko.com,布布扣

     使用共享物件,用来尽可能的减少内存使用量及分享资讯给尽可能多的相似物件。

     它适用于只因为重复而导致使用无法令人接受的大量内存的大量物件。

 
 设计模式阶段,自我觉得对于模式的理解不好。看书看懂了,不代表真的理解了模式。学习继续ing!

《设计模式》结构型模式1,布布扣,bubuko.com

《设计模式》结构型模式1

标签:style   class   blog   c   tar   ext   

原文地址:http://blog.csdn.net/u010542940/article/details/26817365

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!