美文网首页
设计模式

设计模式

作者: 白驹过隙_忽然而已 | 来源:发表于2021-07-13 15:40 被阅读0次

    一、 六大设计原则

    1. 单一职责原则 (Single Responsibility Principle, SRP)

    2. 李氏替换原则(Liskov Substitution Principle, LSP)

    • 子类可以重载父类的方法
    • 父类的方法输入参数宽度必须比子类(重载或覆写)的宽度大,这样用子类去调用方法时会调用父类方法执行
    • 父类的方法返回参数宽度必须必子类(重载或覆写)的宽度大

    3. 依赖倒置原则 (Dependence Inversion Principle, DIP)

    何为正置何为倒置:正置,可以理解成类之间的依赖是实实在在实例间的依赖,就是我们现实生活中的思维。而倒置是程序世界里,面对的是抽象类或者接口这种抽象的理念,就是我们通常所说的面向接口编程。通过将依赖倒置,可以实现模块间的松耦合,降低多成员并行开发的风险和效率,提高系统的稳定性。

    • 构造函数注入
    • setter方法注入
    • 接口方法注入

    4. 接口隔离原则

    接口的方法尽量少。与单一职责所不同的是,单一职责通常是业务上的划分,注重的是职责。接口隔离原则是尽量使用专门的接口,接口中的方法尽量少。

    5. 迪米特原则 (Law of Demeter, LOD)

    类间解耦,对所依赖的类知道的越少越好。要求累尽量内联,提供尽量少的public方法。

    6. 开闭原则

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

    二、 设计模式

    模版方法模式

    image.png

    父类提供几个抽象方法,并定义一个final 方法,子类自定义实现抽象方法。
    主要是针对某一特定的多方法执行顺序,但是多方法需要不同的处理方法。

    责任链模式

    image.png

    结合模版方法模式。设置调用链处理方式。
    通过设置下级节点的方式,组装成一个调用链。【注意调用链不宜过长,会导致业务代码过于负责,调试困难等问题】一个需求只管将请求发送给第一个节点,就会返回一个结果,不知道是谁具体处理。处理器也只负责处理接收到的请求,不知道请求是谁发送的。

    装饰器模式

    image.png

    类似代理模式。与原始类实现同一接口,并通过关联原始子类对象,加入自己的私有方法,重写父类方法来对方法进行增强。

    策略模式

    image.png

    策略类,锦囊类,锦囊类依赖策略类

    适配器模式

    迭代器模式

    image.png

    组合模式

    组合模式又叫合成模式,有时又叫部分-整体模式,主要用来描述部分-整体的关系。
    将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户多单个对象和组合对象的使用具有一致性。


    image.png

    观察者模式

    image.png

    门面模式(Facade Pattern)

    门面模式,也叫外观模式。
    定义:要求一个子系统的外部与其内部的通信必须通 过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。


    image.png

    备忘录模式

    image.png

    访问者模式

    image.png

    通过一个visitor接口定义访问者,并设置可以访问的类型。
    element类设置自己可以被哪个访问者访问。

    状态模式

    当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。


    image.png

    解释器模式

    享元模式

    image.png

    享元模式(Flyweight Pattern)是池技术的重要实现方式。
    使用共享对象可有效地支持大量的细 粒度的对象。

    桥梁模式

    image.png
    解决问题:继承的缺点,强入侵!
    Father类有一个方法A,Son继承了这个方法,然后GrandSon也继承了这个方法, 问题是突然有一天Son要重写父类的这个方法。GrandSon要用从Father 继承过来的方法A,如果你修改了,那就要修改Son和GrandSon之间的关系,风险很大。

    相关文章

      网友评论

          本文标题:设计模式

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