• 设计模式


    一、“开-闭”原则(OCP)

      对扩展开放,对修改关闭。

      里氏代换原则(LSP):任何基类可以出现的地方,子类一定可以出现。

      依赖倒转原则(DIP):依赖于抽象,不要依赖于实现;抽象不应当依赖于细节,细节应当依赖于抽象;要针对接口编程,不要针对实现编程;

      合成/聚合复用原则(CARP):尽量使用合成/聚合,而不是继承。

      迪米特法则(LoD):一个软件实体应当与尽可能少的其它实体发生相互作用。

      接口隔离原则(ISP):应当为客户端提供尽可能小的单独接库,而不是提供大的总接口;

    二、创建型模式

      简单工厂模式:由一个工厂类根据传入的参数决定创建哪一种产品类的实例。

      工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工厂工作推迟到子类中。

      抽象工厂模式:向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。

      单例模式:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

      建造者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

      原型模式:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的方法创建出更多同类型的对象。

    三、结构型模式

      适配器模式:将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。

      装饰器模式:以对客户端透明的方式扩展对象的功能,是继承关系的一种替代方案。

      代理模式:给某一个对象提供一个代理对象,并有代理对象控制原对象的引用。

      外观(门面)模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。

      桥接模式:用于把抽象化与实现化解耦,使得二者可以独立变化。

      组合(合成、整体)模式:将对象组织到树结构中,可以用来描述整体与部分的关系。

      享元模式:主要用于减少创建对象的数量,以减少内存占用和提高性能。

    四、行为型模式

      策略模式:针对一组算法,将每一个算法封装到具体的共同接口的独立的类中,从而使得它们可以相互替换。

      模板方法模式:准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以一不同的形式实现这些抽象方法,从而对剩余的逻辑有不同的实现。

      观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

      迭代子(游标)模式:可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象。

      责任链模式:为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。

      命令模式:把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

      备忘录模式:保存一个对象的某个状态,以便在适当的时候恢复对象。

      状态模式:允许一个对象在其内部状态改变的时候改变其行为。

      访问者模式:封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。

      中介者模式:用来降低多个对象和类之间的通信复杂性。

      解释器模式:实现了一个表达式接口,该接口解释一个特定的上下文。

  • 相关阅读:
    git常用操作的总结
    Vue全局错误捕获
    Vue全局布局组件的设计
    Python 创建守护进程
    常用代码集合
    Linux -- 终端命令快捷键汇总
    MySQL -- 查询结果 直接导出至本地文件
    Linux -- 守护进程
    ConcurrentWebSocketSessionDecorator(并发安全的websocket) The remote endpoint was in state [TEXT_PARTIAL_WRITING]
    Ubuntu安装docker
  • 原文地址:https://www.cnblogs.com/wscy/p/7684543.html
Copyright © 2020-2023  润新知