• 设计模式--总结和对比


    设计模式原则

    设计原则一句话归纳目的

    开闭原则(OCP)

    (Open-Close)

    对扩展开放,对修改关闭减少维护带来新的风险

    依赖倒置原则(DIP)

    (Dependence Inversion)

    高层不应该依赖底层更利于代码结构的升级 扩展

    单一职责原则(SRP)

    (Simple Responsibility)

    一个类只干一件事便于理解,提高代码可读性

    接口隔离原则(ISP)

    (Interface Segregation)

    一个接口只干一件事功能解耦,高聚合,低耦合

    迪米特法则(LoD)

    (Law of Demeter)

    不该知道的不要知道只和朋友交流,不和陌生人说话,减少代码臃肿

    里氏原则(LSP)

    (Liskov Substitution)

    子类重写方法功能发生改变,

    不应该影响父类方法的含义

    防止继承泛滥

    合成复用原则(CARP)

    (Composite/Aggregate Reuse)

    尽量使用组合实现代码复用,而不使用继承降低代码耦合

    GOF 23种设计模式

    分类设计模式
    创建型工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、单例模式(Singleton)、原型模式(Prototype)、建造者模式(Builder)
    结构型代理模式(Proxy)、门面模式(Facade)、装饰者模式(Decorator)、享元模式(Flyweight)、组合模式(Composite)、适配器模式(Adaoter)、桥接模式(Bridge)
    行为型

    模板方法模式(Template Method)、策略模式(Strategy)、责任链模式(Chain of Responsibility)、迭代器模式(Iterator)、命令模式(Command)、状态模式(state)、备忘录模式(Memento)、中介者模式(Mediator)、解释器模式(Interpreter)、观察者模式(Observer)、访问者模式(Visitor)

    各设计模式总结

    设计模式目的框架源码
    工厂方法模式(Factory Method)封装创建细节LoggerFactory、Calender
    单例模式(Singleton)保证独一无二BeanFactory、Runtime
    原型模式(Prototype)高效创建对象ArrayList、PrototypeBean
    建造者模式(Builder)开放个性配置步骤StringBuilder、BeanDefinitionBuilder
    代理模式(Proxy)增强职责ProxyFactoryBean、JdkDynamicAopProxy、CglibAopProxy
    门面模式(Facade)统一访问入口JdbcUtils、RequestFacade
    装饰者模式(Decorator)灵活扩展,同宗同源BufferedReader、InputStream
    享元模式(Flyweight)共享资源池String、Integer、ObjectPool
    组合模式(Composite)统一整体和个体HashMap、SqlNode
    适配器模式(Adaoter)兼容转换AdvisorAdapter、HandlerAdapter
    桥接模式(Bridge)不允许继承DriverManager
    委派模式(Delegate)只对结果负责ClassLoader、BeanDefinitionParserDelegate
    模板方法模式(Template Method)逻辑复用JdbcTemplate、HttpServlet
    策略模式(Strategy)把选择权交给用户Comparator、InstantiationStrategy
    责任链模式(Chain of Responsibility)解耦处理逻辑FilterChain、Pipeline
    迭代器模式(Iterator)统一对集合的访问方式Iterator
    命令模式(Command)解耦请求和处理Runnable、TestCase
    状态模式(state)绑定状态和行为Lifecycle
    备忘录模式(Memento)备份StateManageableMessageContext
    中介者模式(Mediator)统一管理网状资源Timer
    解释器模式(Interpreter)实现特定语法解析Pattern、ExpressionParser
    观察者模式(Observer)解耦观察者与被观察者ContextLoaderListener
    访问者模式(Visitor)解耦数据结构和数据操作FileVisitor、BeanDefinitionVisitor

    设计模式之间的关联关系和对比

    • 单例模式和工厂模式

    实际业务代码中,通常会把工厂类设计为单例。

    • 策略模式和工厂模式

    工厂模式包含工厂方法模式和抽象工厂模式是创建型模式,策略模式属于行为型模式。

    工厂模式主要目的是封装好创建逻辑,策略模式接收工厂创建好的对象,从而实现不同的行为。

    • 策暗模式和委派模式

    策略模式是委派模式内部的一种实现形式,策略模式关注的结果是否能相互替代。

    委派模式更关注分发和调度的过程。

    • 模板方法模式和工厂方法模式

    工厂方法是模板方法的一种特殊实现。

    • 模板方法模式和策暗模式

    模板方法和策略模式都有封装算法。

    策略模式是使不同算法可以相互替换,且不影响客户端应用层的使用。

    模板方法是针对定义一个算法的流程,将一些有细微差异的部分交给子类实现。

    模板方法模式不能改变算法流程,策略模式可以改变算法流程且可替换。策略模式通常用来代替if. else..等条件分支语句。

    • 装饰者模式和静态代理模式

    装饰者模式关注点在于给对象动态添力口方法,而代理更加注重控制对对象的访问。

    代理模式通常会在代理类中创建被代理对象的实例,而装饰者模式通常把被装饰者作为构造参数。

    • 装饰者模式和适配器模式

    装饰者模式和适配器模式都是属于包装器模式(Wrapper Pattern)。

    装饰者模式可以实现被装饰者与相同的接口或者继承被装饰者作为它的子类,而适配器和被适配者
    可以实现不同的接口。

    • 适配器模式和静态代理模式

    适配器可以结合静态代理来实现,保存被适配对象的引用,但不是唯一的实现方式。

    • 适配器模式和策暗模式

    在适配业务复杂的情况下,利用策略模式优化动态适配逻辑。

  • 相关阅读:
    【愚公系列】2022年09月 微信小程序-WebGL纹理材质的使用
    Python小知识点
    开发者地图
    zookeeper的安装与配置和启动闪退问题的解决(win)
    nginx
    http协议基础与Apache的简单介绍
    JUC——CyclicBarrier
    大学生能参加哪些比赛你都知道吗? (适合各个专业)了解 还是 错过 ?
    点成分享 | 选择点成BEOnChip芯片的六大理由
    前端播放m3u8格式视频
  • 原文地址:https://blog.csdn.net/qq_38619449/article/details/136309912