本博客大部分内容来于免费在线学习设计模式

本文为设计模式学习笔记

1:设计模式概念

设计模式是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。是解决特定问题的一般性概念。

设计模式可以使面向对象保持结构良好

  • 设计模式是针对软件设计中常见问题的工具箱,其中的工具就是各种经过实践验证的解决方案。即使你从未遇到过这些问题,了解模式仍然非常有用,因为它能指导你如何使用面向对象的设计原则来解决各种问题。
  • 设计模式定义了一种让你和团队成员能够更高效沟通的通用语言。

算法和设计模式的区别:
算法更像是菜谱: 提供达成目标的明确步骤。而模式更像是蓝图: 你可以看到最终的结果和模式的功能,但需要自己确定实现步骤。

2:分类

  • 创建型模式提供创建对象的机制,增加已有代码的灵活性和可复用性。
  • 结构型模式介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。
  • 行为模式负责对象间的高效沟通和职责委派。

3:六大原则

  • 开闭原则:一个软件实体如类、模块和函数应该对修改封闭,对扩展开放。
  • 单一职责原则:一个类只做一件事,一个类应该只有一个引起它修改的原因。
  • 里氏替换原则:子类应该可以完全替换父类。也就是说在使用继承时,只扩展新功能,而不要破坏父类原有的功能。
  • 依赖倒置原则:细节应该依赖于抽象,抽象不应依赖于细节。把抽象层放在程序设计的高层,并保持稳定,程序的细节变化由低层的实现层来完成。
  • 迪米特法则:又名「最少知道原则」,一个类不应知道自己操作的类的细节,换言之,只和朋友谈话,不和朋友的朋友谈话。
  • 接口隔离原则:客户端不应依赖它不需要的接口。如果一个接口在实现时,部分方法由于冗余被客户端空实现,则应该将接口拆分,让实现类只需依赖自己需要的接口方法。

20201217001050

4:设计模式目录

4-1:创建型模式

  • 工厂方法模式
    工厂方法模式是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
  • 抽象工厂模式
    抽象工厂(AbstractFactory)模式是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。
  • 生成器模式
    生成器模式是一种创建型设计模式,使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。
  • 原型模式
    原型模式是一种创建型设计模式,使你能够复制已有对象,而又无需使代码依赖它们所属的类。
  • 单例模式
    单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。

4-2:结构型模式

  • 适配器模式
    适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作。它结合了两个独立接口的功能。
  • 桥接模式
    桥接模式是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。
  • 组合模式
    组合模式是一种结构型设计模式,又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象,你可以使用它将对象组合成树状结构,并且能像使用独立对象一样使用它们。
  • 装饰模式
    装饰模式是一种结构型设计模式,允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。即在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)。
  • 外观模式
    外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。
  • 享元模式
    享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。
  • 代理模式
    代理模式是一种结构型设计模式,让你能够提供对象的替代品或其占位符。代理控制着对于目标对象的访问,并允许在将请求提交给对象前后进行一些处理。

4-3:行为模式

  • 责任链模式
    责任链模式是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。
  • 命令模式
    命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。
  • 迭代器模式
    迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。
  • 中介者模式
    中介者模式是一种行为设计模式,能让你减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。
  • 备忘录模式
    备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。
  • 观察者模式
    观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。
  • 状态模式
    状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。
  • 策略模式
    策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。
  • 模板方法模式
    模板方法模式是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。
  • 访问者模式
    访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。

部分链接还没学,所以没有

5:参考

设计模式-创造型模式