- 代表了代码的最佳实践,被有经验的开发人员所使用
- 设计模式是很多被反复使用并知晓,主要是对代码和经验的总结
- 使用设计模式是为了重用代码,让代码更容易被他人理解,保证代码的可靠性
- 对接口编程而不是对实现编程
- 优先使用对象组合而不是继承关系
- 对扩展开放,对修改关闭
- 编写软件,比如类、模块、方法
- 使用抽象进行构建,使用实现扩展细节
- 面向抽象编程
- 提高软件系统的可复用性和可维护性
- 依赖倒转原则是开闭原则的基础,针对接口进行编程
- 依赖抽象,而不是具体的实现
- 可以减少类之间的耦合性,提高系统稳定性,提高代码可读性和可维护性
- 降低修改程序所造成的风险
- 一个类/接口/方法,只负责一项职责
- 降低程序的复杂度,提高程序可维护性,降低了变更所带来的风险
- 使用多个接口,而不是使用单一的接口
- 尽量细化接口,接口中的方法尽量少
- 符合低耦合的设计**,提高了可扩展性和可维护性
- 一个对象应该对其他对象保持最少的了解,又被称为最少知道原则
- 降低类鱼类之间的耦合关系
- 强调只和朋友(成员变量/方法中输入或输出的参数)交流,不和陌生人说话
- 里氏替换原则是继承复用的基石,也是对开闭原则的补充
- 子类可以扩展父类的功能,但是不能修改父类的原有功能
- 子类可以实现父类的抽象方法,但是不能覆盖父类原有的方法
- 子类中可以增加自己特有的方法
- 对子类的继承关系进行约束,也是开闭原则的补充
- 可以增加程序的健壮性
- 尽量使用组合/聚合的方式,而不是使用继承关系达到软件复用的目的
- 可以使系统更加灵活,降低类与类之间耦合度,一个类的变化对其他类造成的影响相对较小
- 创建型模式
- 隐藏了创建对象的过程,通过逻辑方法创建对象,而不是通过
new
关键字进行创建- 简单工厂方法模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
- 隐藏了创建对象的过程,通过逻辑方法创建对象,而不是通过
- 结构性模式
- 主要关注类和对象的组合关系
- 继承概念被用来组合接口和定义组合对象,获得新的功能方式
- 适配器模式
- 桥接模式
- 组合模式
- 装饰模式
- 外观模式
- 享元模式
- 代理模式
- 行为型模式
- 主要关注对象之间的通信
- 责任链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 模板方法模式
- 访问者模式
- 主要关注对象之间的通信