模式分类
-
创建型模式
工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式 -
结构型模式
- 适配器模式
- 类的适配器模式
- 接口的适配器模式
- 对象的适配器模式(是如下设计模式的起源)
- 装饰模式
- 代理模式
- 外观模式
- 桥接模式
- 组合模式
- 享元模式
- 适配器模式
-
行为型模式
父类与子类 两个类之间 类的状态 通过中间类 策略模式 观察者模式 备忘录模式 访问者模式 模板方法模式 迭代子模式 状态模式 中介者模式 XXX 责任链模式 XXX 解释器模式 XXX 命令模式 XXX XXX -
并发型模式和线程池模式
模式的区别总结
- 工厂模式: 根据多态,生产各种子类型的对象
- 单例模式: 用静态方法以线程安全的方式,每次都得到同一个实例
- 建造者模式: 封装了复杂的建造过程,我们只需要传入建造者和建造工具就可以得到产品
- 原型模式: 对对象进行克隆(详见:深克隆和浅克隆)
- 适配器模式: 为了解决接口中的方法过多,却又只想实现部分方法的问题
- 装饰模式: 装饰模式是对对象功能的增强(强调增强对象的能力)
- 代理模式: 建造出一个代理对象,替原来的对象做事儿(强调代替)
- 外观模式: 为了解决类与类之间复杂的依赖关系的(用一个统一的外观类,将其他类都纳入其中来解决)
- 桥接模式: 将抽象化与实现化解耦,使得二者可以独立变化(JDBC就是个例子)
- 组合模式: 又叫部分-整体模式(主要用来处理树状结构)
- 策略模式: 解决一件事情的多种策略(看似工厂模式,工厂模式强调对象,策略模式强调方法)
- 模板方法模式: 父类定义解决问题的模板,子类定义解决问题的n个实现
- 观察者模式: 当一个对象发生变化时,其它依赖的对象都会收到通知,并且跟着相应变化
- 迭代子模式: 就是对集合Set的遍历模式(核心:集合,Iterator)
- 责任链模式: 每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求(就是各大框架里的拦截器链)
- 命令模式: 发令者、命令、执行者,三者解耦
- 备忘录模式: 备忘录使用者的状态随时可以变化,一旦将状态存入备忘录,变化后的状态还可以从备忘录恢复
- 状态模式: 对象的状态改变时,行为也跟着改变
- 访问者模式: 解决一个对象的内容被另外一个对象的方法访问(分离对象数据结构与行为的方法)
- 中介者模式: 用来降低类与类之间耦合度的
- 解释器模式: 用于构造一个语言的文法(实际应用于java语音的开发编译器中)