http://c.biancheng.net/view/1317.html
设计模式的六大原则
- 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责
- 开放封闭原则
扩展yes,修改no - 里氏替换原则
任何基类出现的地方,子类一定可以出现 - 依赖倒转原则
针对接口编程,依赖于抽象而不依赖于具体 - 接口隔离原则
使用多个隔离的接口,比使用单个接口要好/降低类的耦合度 - 迪米特原则
一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立 - 合成复用原则
组合复用优先于继承
创建型模式
在所有的工厂模式中,我们都强调一点:两个类A和B之间的关系应该仅仅是A创建B或是A使用B,而不能两种关系都有。
简单工厂:
单例工厂:
抽象工厂:
单例模式:
原型模式:
建造者模式:由指挥者、抽象工厂、具体工厂、产品四大元素组成,方便于生成复杂对象、构造时属性需要有序创建的对象、对象的创建独立于对象的类
结构型模式
适配器模式:
桥接模式:
组合模式:
装饰模式:
外观模式:又称为门面模式,Slf4j日志api是门面模式的一个应用
享元模式:
代理模式:
行为型模式
职责链模式:
命令模式:
解释器模式:
迭代器模式:
中介者模式:
备忘录模式:
观察者模式:
状态模式:
策略模式:
- 设计:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。
- 组成:环境类、抽象策略类、实际策略类
- 符合单一职责原则、开闭原则、依赖倒转原则
利用Autowired实现策略模式的高级姿势
模板方法模式:
- 设计:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- 组成:父类、子类、抽象方法、具体方法、钩子方法
- 符合单一职责原则、开闭原则。
Java8使用模板方法
访问者模式: