美文网首页
设计模式

设计模式

作者: kimcastle | 来源:发表于2022-08-02 21:07 被阅读0次
    设计模式入门
    • 计算机行业老话:设计即生活
      -- 由 ..... 谁设计,即是由 .....谁导演
    • 使用设计模式最好的方式是:把设计模式装进脑子里,然后在你的设计和已经有的应用中,寻找何处可以使用它们。


      如何使用设计模式

    11 个即将要学的设计模式

    • 策略模式 (功能委托以及策略选择)
    • 观察者模式 (观察对象变化)
    • 装饰者模式 (赋予对象新功能)
    • 工厂模式 (如何创建新对象)* 单件模式 (只能有一个实例对象)
    • 命令模式
    • 适配器模式与外观察者模式
    • 模板方法模式
    • 迭代器与组合模式
    • 状态模式
    • 代理模式
    • 复合模式

    题外话:如果你真的想学,而且学得更快、更深入,就应该注意你怎样才能集中注意力。思考自己是怎样思考的,并了解自己的学习方法。
    我们长这么大都没有上过有关元认知或学习理论的课程。我们想学习,但是很少人教我们怎么学习。
    接口代表每个行为(规定行为动作),而行为的每个实现都必须实现接口

    策略模式

    • 定义:封装可以互换的行为,然后使用委托来决定采用哪个行为。通常由子类来决定具体的策略。


      策略模式
      子类决定采用什么策略
    • 优点:
      策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性

    • 缺点:
      (1)客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道算法或行为的情况。
      (2)由于策略模式把每个具体的策略实现都单独封装成为类,如果备选的策略很多的话,那么对象的数目就会很可观。
      Page:18

    观察者模式

    • 定义:在对象之间定义一对多的关联关系,当一个对象改变状态时,主动通知依赖它的多个对象。


      观察者类图

    装饰者模式

    • 定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。


      装饰者模式类图

      参考:blog.csdn.net/su2231595742/article/details/121329839

    工厂模式

    • 定义:定义一个创建对象的接口,但是由子类决定实例化具体哪一类。
      工厂模式有3种:简单工厂模式、工厂模式、抽象工厂模式
      工厂类请看这篇文章,说得非常明白,看这一篇就够了:
      zhuanlan.zhihu.com/p/388263023

    命令模式
    在说命令模式之前,先提个醒,“命令模式”和“适配器模式”都是为了解决:调用者与接收者之间的关系。
    “命令模式”:封装调用命令
    “适配器模式”:解决调用者与接收者接口差异矛盾。

    • 定义:将请求封装成对象,以便不同的请求来参数化具体的接收者。


      命令模式类图

    适配器模式

    • 定义:将一个类的接口,转换成客户期望的另一个接口。


      设配器形象图
    • 适配器类图
      这里只有一个重点,设配器(Adapter)必须实现目标接口(Interface Target)
      设配器类图

    模板方法模式

    • 定义:在基础类的一个方法中定义一个算法的骨架,而将部分方法下放到子类去具体实现。子类可以在不改变算法架构的基础上,重新定义修改算中的某些方法。

    模板方法模式就一个重点:泛化某些模板步骤中某些具体差异的操作步骤名称。

    模板方法类图

    迭代器与组合模式
    定义:提供了一个方法,按一定顺序访问一个聚合里面的对象,而又不暴露其内部的结构。

    迭代器类图

    状态模式
    定义:一个主类有多种状态,每种状态都独立出去成为一个个单独的状态类,状态类继承共同接口(接口规范行为)。主类可以有具体的操作(可能改变状态),再又当前状态决定具体行为。

    状态模式类图

    代理模式
    定义:每一个代理,都代表着某个真实的对象。

    远程调用方法4个要素:

    • 接口规范
    • 失败风险考虑(异常)
    • 请求变量过滤
    • 返回结果统一处理

    相关文章

      网友评论

          本文标题:设计模式

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