- 设计模式的目的是对接口编程而不是对实现编程。
 - 优先使用对象组合而不是继承,继承会导致类的复杂性提升。
 
- 开闭原则 扩展靠添加新类实现,而不是修改旧类。
 - 里氏替换原则 继承父类时,实现父类的扩展方法,而不是覆盖父类定义好的方法。
 - 依赖倒置原则 上层模块依赖下层模块的抽象。
 - 单一职责原则 每个类负责自己的事情,而不是将所有方法都放在一个万能类中。
 - 接口隔离原则 一个类对另一个类的依赖应建立在最小接口上。
 - 迪米特原则 不需要直接交互的两个类可以使用中介类交互。但可能导致产生大量中介类。
 - 合成复用原则 优先使用组合关系复用功能,其次才考虑继承关系。
 
- 单例模式
 - 原型模式
 - 工厂模式
 - 抽象工厂模式
 - 建造者模式
 
- 代理模式
 - 适配器模式
 - 桥接模式
 - 装饰模式
 - 外观模式
 - 享元模式
 - 组合模式
 
- 模板模式
 - 策略模式
 - 命令模式
 - 责任链模式
 - 状态模式
 - 观察者模式
 - 中介者模式
 - 迭代器模式
 - 访问者模式