美文网首页
设计模式--Maintainability(可维护性)

设计模式--Maintainability(可维护性)

作者: OVO_WIE | 来源:发表于2019-05-13 14:48 被阅读0次

    Creational patterns(创造)


    Creational patterns关注的是如何根据具体需要创造对象.(是否需要封装,是否client可见)

        Factory Method pattern——工厂模式

    当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。

    定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。

        是一个Object

        构建过程对client可见

    说人话:给你一件衣服(对象接口),但衣服的颜色未知,子类再告诉你.(实例化)

    创建一个接口包含工厂方法的声明,在子类实现该方法时由子类决定返回哪个具体实例

    Open-Closed Principle (OCP) ——对扩展的开放,对修改已有代码的封闭

        Abstract Factory(Kit)——抽象工厂模式

    抽象工厂模式:􏰀供接口以创建一组相关/相互依赖的对象, 但不需要指明其具体类。 

        是多个Object

        构建过程对client可见

    说人话:给你一个穿搭建议衣服配裤子(一组相关对象接口),但是衣服裤子的颜色未知,子类时再告诉你.(实例化)

    和Factory的差别:限制衣服只能搭裤子,而不能搭裙子.(接口组合固定)

    设计一个抽象类包含多个工厂方法,子类实现时必须同时实现多个工厂方法,以实现“组合”的效果

        Builder——构造器模式

    创建复杂对象,包含多个组成部分.   

        是一个Object

        细节对client隐藏(object的内部隐藏,对object的创建过程无法隐藏)

    说人话:给你一套固定好的穿搭(一组相关对象实例),并且衣服裤子颜色款式都搭好了.

    和Abstract Factory的差别:给出的穿搭直接就能用(Object内部也已实例化)

    创建的是一个完整的产品,有多个部分组成,client不需了解每个部分是怎么创建、各个部分怎么组合,最终得到一个产品的完整 object

    Structural patterns(结构)


    Structural patterns关注的是代码段之间的连接关系.即具体实例之间的关系. 

        Bridge——桥接模式

    在A中通过动态传入(需要连接的对象B),建立关系,并在A中创建一个属性把B保存下来.至此完成该模式的delegation linking.

    run time delegation linking

    说人话:借你一辆车(传入车钥匙),你打了一把车钥匙(保存车钥匙),从此你就可以一直用这辆车(delegation link)

    一个类A的对象中有其他类B的对象作为其组成部分,但A的对 象具体绑定到B的哪个具体子类的实现?在运行时通过delegation加以组合, 并永久保存这种delegation关系。

        Proxy——代理模式

    说人话:让你走到一个地方,你买了辆单车(Proxy代理),以后每次去都通过单车去,更快更轻松.(降低代价和难度)

        Composite——组合模式(不考)

    说人话:

    Behavioral patterns(行为)


        Observer——观察模式

    Java有自带的Observable(偶像)抽象类和Observe(粉丝)抽象类

    说人话:微博关注实例.粉丝将自己委托给偶像,偶像保存粉丝并调用粉丝的方法.粉丝自己无法主动使用自己的方法.

    粉丝被创建后只被偶像保存,因此只能通过偶像调用.

        Visitor

    说人话:购物车实例.物品将自己委托给购物车,购物车保存物品并对物品进行操作.在购物车中对不同物体有特殊操作,体现各个物体的差异性,但是不需要更改物品ADT,保持了可维护性.

    与Observe的差别: Observe是只有粉丝一种(物品),故没有对某个物品的特殊操作.其余的委托思想是一样的.

        Mediator(不考)

    说人话: 群聊系统实例. Mediator类作为中转服务器,负责管理群聊人员和发送群聊信息.每个人员只需要将自己添加进Mediator类中或是向Mediator类发送信息以及收到Mediator类作出反应.

    与Visitor的差别: Visitor中的物品没有自己的主动行为,靠购物车调用,因此是把自己整个类委托给了Visitor类. 而Mediator系统中的人可以主动发送消息和加入群聊,只是将这些功能委托给了Mediator类.

    和Observe的差别: Observe中的偶像也是管理者,是高于粉丝的.  Mediator中的管理者并不是具体的人,只是一个服务器,每个人都是平等的.

        Command(不考)

    说人话:Terminal实例. 通过封装将复杂操作对外表现为傻瓜指令.

    State-based construction(基于状态)


        state

    说人话:使用有限状态机来定义程序的行为、使用状态来控制程序的执行.

    将程序看作是一个有限状态自动机,侧重于对“状态”及“状态转换” 的抽象和编程.

        memento

    说人话:记住对象的历史状态,以便于“回滚”

    Originator--需要“备忘”的类

    Caretaker--添加originator的备忘记录和恢复

    Memento--备忘录,记录originator对象的历史状态

    相关文章

      网友评论

          本文标题:设计模式--Maintainability(可维护性)

          本文链接:https://www.haomeiwen.com/subject/tolwlqtx.html