您的位置:首页 > 其它

【软考总结】设计模式之结构型

2017-05-30 10:41 302 查看
   接上一篇博客《【软考总结】设置模式之创建型》,带来姊妹篇。

1、适配器Adapter

   转换接口,使原本不能一起工作的类一起工作。
   应用场景:我们要调用的接口类型,无法满足我们新系统的使用需求,这时候,我们需要将旧系统的接口,通过适配器进行转配,达到支持新接口调用的目的。
 

2、桥接模式Bridge

   变化部分和主类分离,从而将多个维度的变化彻底分离,最后提供一个管理类来组合不同维度上的变化。
   比如,《大话设计模式》中的手机品牌和手机功能的分离,用笔作画时,笔的变化和图形的变化分离开来。这个设计模式也用到了大家一直都讨论的聚合关系,手机品牌包括手机软件,但没有手机软件仍然是一个手机,所以,手机品牌和软件之间的关系是聚合关系。 



  

3、组合模式Composite

   将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(仔细读component类和composite类就可以更好的理解这句话)
   在这个模式中有一个抽象的父类Component
,是枝和叶的父类。那么,枝和叶有什么区别呢?对,枝可以再分枝或叶,而页不能再细分。在代码中如何区分的呢?枝(Composite)中,PrivateList<Component> children=new List<Component>();此方法,用来存储其下的枝和叶,枝的添加方法,通过
Component集合,添加进新的枝和叶,而叶的添加方法,则不能添加。可以看出,枝和叶都是Component类型,只是枝可以继续分枝和叶,其实说的是对象包含对象的问题。

           


 
   应用场景:这种组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多及目录呈现等树形结构数据的操作。
            

                                


4、装饰模式Decorator

   动态地给一个对象附加额外的职责。
   装饰者为功能的扩展提供了一个比使用子类继承更加灵活的选择。
   学习这个设计模式需要注意两点:被装饰者,装饰的顺序。
   确定被装饰者。以《大话设计模式》中的例子说明,我们需要装饰一个人,那么,人就是被装饰的对象,服饰类(Finery)继承人类(Person),用服饰装饰人,所以,服饰类中:

protected Person component;
//打扮
public void Decorate(Person component)
{
//确定要被装饰的对象
This.component=component;
}


在客户端确定装饰顺序,像穿衣服一样,里面的衣服先穿,最后装饰的最先变现出来。
应用场景:手机地图中画布的显示,确定画布,画基础画布,画图钉,画提示框等等。

5、外观模式 Facade

一个类代表一个系统。

将多个关系比较复杂的类放到一个外观类中统一处理,从而外部调用起来只要与外观打交道,而不必清楚内部各个类之间的调用关系,简化了客户端调用的复杂度。
    这时候,你可能想到了某个设计模式,客户端只用和Director打交道,不用知道里面具体的过程。嘿,醒醒,想啥呢!那是建造者模式,是生成对象,而外观模式,主要是处理类与类之间的结构关系和信息的传递,不是对象的构建。一些做过《机房重构》的小伙伴可能有更深的理解,这里不再赘述。(感觉在软考中,没做到过外观模式的题)
    

6、享元模式Flyweight

    共享对象,实例不保存自己的状态,将状态保存到外部。
   享元模式的核心在于享元工厂类,享元工厂类提供一个存储享元对象的享元池,用户需要对象时,首先从享元池中获取,如果享元池中不存在,则创建一个新的享元对象返回给用户,并在享元池中保存该新增对象。以《大话设计模式》中 网站共享为例,如果已经有博客网站类型,直接返回一个博客网站类,如果没有,实例化创建。还有点像单例模式了是不。
 

7、代理模式Proxy

   为其他对象提供一种代理以控制对这个对象的访问。与适配器不同的是,代理模式中,代理和真实的类都继承父类,拥有的父类的方法,而适配器只起到一个转换的作用。在代理类中,由真实类进行操作。

//代理类
class Proxy:IGiveGift{
Pursuit gg;
Public Proxy ( Girl mm)
{
gg=new Pursuit();      //真实类
}

Public void GiveFlowers()
{
gg.giveFlowers();       //真实类送花
}
}

    参考:http://blog.csdn.net/liujiahan629629/article/details/19428485

总结:

    结构型组合类和对象,获得更大的结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: