【设计模式】——总结

    设计模式是面向对象技术的最新进展之一。设计模式是可以复用的设计方案,我们可以站在巨人肩膀上,无需为重复出现的问题再次设计解决方案。 设计模式有利于提高我们的思考层次,需要我们不断的认真学习。

    每个设计模式的特点是他们分类的依据。如下图是我个人的理解,若有不同,望指出!

创建型
    抽象工厂:一系列 接口 具体类 创建一系列接口;多个类型产品、
                      臃肿
    建造者: 构建 表示 构建过程和表示过程分离,使得相同的构建可以创建不同表示的实例。
    工厂:接口 创建接口
    原型:copy 通过复制创建一个新的实例
    单例:只创建一个实例
    共同特点:接口 创建什么、怎么创建
结构型
    适配器:转换接口
                 开封 协同
    桥接:抽象 实现 变化
               聚合代替继承
               解耦不同变化 找出变化并封装
    组合:部分-整体
    装饰:为一个对象动态添加职责
               动态、透明的方式给单个对象添加职责
    外观:一组接口——高层接口
             信息的隐藏
    享元:共享
    代理:代理 对这个对象的访问


行为型
    观察者:1:n
        定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,是他们能够自动更新自己。
        特点:1:n=1个通知者:n个观察者;通知者状态发生变化,观察者的行为更新。
    模板:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
        特点:抽象 继承
    命令:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
        特点:多建立类
    状态:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
        特点:状态改变,行为改变。
    职责链:使多个对象都有机会处理请求,从而避免请求的发送者和接收者的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
        特点:1:n=1个请求:n个处理者

    解释器:给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
        特点:解释
    中介者:用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
        特点:中介 不之间发生关系
    访问者:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
        特点:新操作
    策略:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
        特点:封装算法。
    备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后,就可将该对象恢复到原先保存的状态。
        特点: 保存状态
    迭代器:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
        特点:遍历

六大原则:

    设计程序坚持这六大原则,有利于程序的维护、复用、扩展,增强其灵活性。


    感受:读着第29章对设计模式的总结,知道什么叫做皮毛!虽然,已经学习设计模式一个月了,但是,也仅仅是理解了一个皮毛,仅仅是理解了一些代码,机械的懂得了设计模式的优缺点,什么时候使用!对其真正的思想精华,吸收的不是很多,还有待进一步大空间的进步。
    设计模式的特点可能就是这样,当初看培养计划时,上面也是说,设计模式需要反复学习,一次学透是不可能的。这次,我对设计模式的学习也还算认真,设计模式有23个,学习过程中,难免有情绪起伏,故有些设计模式学习的不错,有些就真的是皮毛,模模糊糊了,甚至连他们的故事都想不起来。若猛地问我一个设计模式的话,我需要认真想才可以想起来,有时,还可能混。
    我计划,这次先简单总结一下,主要目的是了解自己情况。设计模式我还需要对其进行长久学习。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章