设计模式
1. 面向对象的五个基本原则
1.1. 1.单一职责原则(Single-Responsibility Principle)
定义: 一个类只负责一个功能领域中的相应职责,或者就一个类而言,应该只有一个引起它变化的原因。
优点:降低复杂性,可读性提高,维护性提高,变更引起的风险降低
推荐:接口和方法一定要做到单一职责,类的设计尽量做到只有一个原因引起变化
1.2. 2.开放封闭原则(Open-Closed principle)
一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
1.3. 3.里氏替换原则(Liskov Substitution Principle)
定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象。(只要父类能出现的地方,子类就可以出现,替换为子类也不会产生任何错误和异常)
优点:增强程序的健壮性
含义:
- 子类必须完全实现父类的方法(父类可以被子类替代)
- 子类可以有自己的个性(子类不能被父类替代)
- 子类的方法的前置条件必须与超类中的被覆写的方法的前置条件相同或者更宽松.
- 覆写或实现父类的方法时输出结果可以被缩小
推荐:
- 在类中调用其他类时务必使用父类或接口.
- 如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生了畸变,则建议断开父子继承关系,采用依赖,聚集和组合等关系代替继承.
1.4. 4.接口隔离原则(Interface-Segregation Principle)
定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口
优点:保证接口的纯洁性,接口细化.
1.5. 5.依赖倒置原则(Dependency-Inversion Principle)
定义:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要面向接口编程,而不是面向实现编程。
优点:减少类之间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性.
推荐:
- 每个类都尽量有接口或者抽象类,或者都具备.
- 变量的表面类型尽量是接口或者是抽象
- 任何类都不应该从具体类派生
- 尽量不要覆写基类的方法
- 结合里式替换原则使用
2. 设计模式的基本原则
2~5
2.1. 6.迪米特法则(Law of Demeter)
定义:一个软件实体应当尽可能少地与其他实体发生相互作用.即当其中某一个模块发生修改时,就会尽量少地影响其他模块.
优点:解耦,提高复用率 缺点:会导致系统复杂度提高
推荐:类跳转超过两次要考虑重构
2.2. 7.合成复用原则(Composite Reuse Principle)
原则是尽量使用组合/聚合的方式,而不是使用继承。