1.避免重复原则
一份代码只有一份拷贝,一个完备的功能点只有一个实现,减少冗余代码.
2.单一权责原则
只做一件事,做好一件事,降低复杂度.整个设计围绕一个权责进行设计,容易产生高内聚,低耦合的代码.
3.开闭原则
对源代码修改关闭,对功能需求扩展开放.使代码处于良性循环的状态(设计模式的目标),设计模式是重构的产物不是设计的产物.
4.里氏代换原则
父类可以被子类替换(万佛朝宗),一生二,二生三,三生万物,万物归一.通过抽象类与子类交互,将变化分离,并且通过子类将变化封装起来.
5.接口分离原则
单接口优于多接口.多接口容易使子类获得过多的馈赠,而且多接口的变化会波及到所有子类,破坏封装性,单接口的粒度较小,更容易复用,扩展.
6.倒置原则
细节依赖接口,接口不依赖细节.接口稳定,细节多变.将变化与不变分割开,单独的处理(处理复杂事物的方法).接口通常是一种契约,面向接口也可以延伸为面向契约编程,抽象到具体(无中生有),具体到抽象(有归于无).
7.优先利用组合而非继承
从父类继承的通常是不变的东西,但是父类的变化会波及到所有的子类,容易使子类产生过多的冗余.
继承属于白盒复用,子类对父类的了解超出父类的期望,破坏的面向对象的封装性,并且通过继承会将变化封装到子类中,使子类变与不变耦合在一起,代码复杂化.
组合属于黑盒复用,可以通过外部接口来解耦合,封装内部实现.
继承:一切皆是对象,组合:万物皆相互联系,孤类的产生没有意义.
8.好莱坞原则
框架与组件关系,框架层调用组件层(框架主动),组件层被框架调用(组件被动).
9.命令查询分离原则
命令:通常改变调用对象状态,没有返回值.
查询:返回查询数据,没有入参,不会改变调用对象状态.
分离命令和查询,权责单一,功能完备.
10.懒人原则
不要重复造轮子,百家之长归我所有.
过早的优化是一切邪恶根源.
不要设计暂时不需要的功能(不要自找麻烦,增加复杂度).
写代码就是放bug的过程,无bug只有不写代码的时候(少写代码).
11.自治原则
数据与方法良好的封装,自己的方法操纵自己的数据.不要通过查询其他对象的状态来决定自己的行为,减少外部依赖,降低耦合.
12.kiss原则
保持设计简单,简约.复杂的事物由简单的事物组成,复杂的事物也可以抽象为简单的事物,化繁为简,不做冗余设计,过犹而不及.
13.迪米特法则
主要是通过引入间接层来解耦合,只与间接层交互.
具体来说,在面向对象的方法中,一个方法“M”和一个对象“O”只可以调用以下几种对象的方法:
1. O自己
2. M的参数
3. 在M中创建的对象
4. O的直接组件对象
阅读(1624) | 评论(0) | 转发(0) |