设计模式概览

636人浏览 / 7人评论

设计模式的六大原则

  • 单一职责原则:一个类只做一件事儿
  • 开闭原则:对扩展开发, 对修改关闭。
  • 里氏替换原则:继承时子类完全实现基类方法
  • 依赖倒转原则:面向接口变成
  • 接口隔离原则:使用接口进行功能拆分
  • 迪米特原则:不和陌生人说话

设计模式分类

  • 创建型
    • 单例模式
      • 懒汉式
      • 饿汉式
      • double-check locking
      • 静态内部类
      • 枚举
    • 工厂模式
      • 抽象工厂模式 工厂的工厂模式
      • Spring的bean工厂
    • 建造者模式
      • 类中域较多,切可分组
      • 构建不可变对象
    • 原型模式
      • 提供模板,然后进行克隆
  • 结构型
    • 适配器模式
      • 用于兼容多种接口,平时较少使用
    • 桥接模式
      • 一个中间类,多个实现类。中间类中包含实现类,并调用实现类的具体方法,较少使用
    • 过滤器模式
      • 通过逻辑运算解耦过滤操作, 但条件过滤器,过滤条件逻辑过滤器,较少使用
    • 装饰器模式
      • 用于扩展原类功能,切面类可以理解成装饰器的一种使用。常用
    • 外观模式
      • 当某种业务较为复杂的时候,用于隐藏功能的复杂性,对外提供简单接口。service层可以理解成mapper层的外观模式。常用。
    • 享元模式
      • 缓存, 就是重复使用已经创建的对象,这个在我们系统中经常使用,比如单值代码等。常用。
    • 代理模式
      • 静态代理
      • 动态代理
        • jdk动态代理
        • cglib代理
      • Spring的bean代理
  • 行为型
    • 责任链模式
      • 重点是next
      • 最经典的使用场景是javaee中的filter
      • Java8中的Stream也是责任链的一种使用场景
    • 命令模式
      • 线程池, 每个线程就是要给命令
    • 解释器模式
      • 这种看的较多的是mybatis中的Example
    • 迭代器模式
      • List、Set都用到了这个模式,Iterator
    • 中介者模式
      • Context就是中介者, 所有的类均是与Context进行交互
      • 貌似有一个模式就叫Context模式
    • 备忘录模式
      • 就是保存对象的域,用于在遇到的时候恢复对象状态。这种模式用的较少
    • 观察者模式
      • 观察者对象中包含一个或多个接收信息的对象,在需要监听的属性的地方添加观察,当该属性变化的时候通知对应的接收对象。这个地方,观察者有点像一个消息队列。接收生产者生产的消息,推送导消费者
    • 状态模式
      • Context和State组成的一个设计模式,由State确定Context的状态。
    • 策略模式
      • 一个问题的多种实现,或者多种不同的解法
      • 比如,我们需要根据不同的法院对接不同的执行系统,只需要预先定义好规则,然后然后传入法院编号,就可以自行获取。
    • 模板模式
      • 定义模板方法
        • Servlet就是一种模板模式的使用,定义好doGet、doPost等方法实现
    • 访问者模式
      • 策略模式的一种反方向实现, 较为少用