1、找出应用中可能需要变化的部分,把它们独立出来,不要和那些不变的代码混到一起。
--把会变化的部分取出并“封装”起来,好让其他部分不会受到影响。代码变化引起的不经意后果变少,系统变得更有弹性。
2、针对接口编程,而不是针对实现编程。
--“针对接口编程”真正的意思是“针对超类型(super type)编程”。这里所谓的“接口”有多个含义,接口是一个“概念”,也可以是一种java的interface构造。“针对接口编程”关键是多态。利用多态,程序可以针对超类型编程,执行时会根据实际情况执行真正的行为,不会被绑死在超类型的行为上。“针对超类型编程”这句话,可以更明确地说成“变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只要是具体实现此超类型的类所产生的对象,都可以指定给这个变量。这也意味着,声明类时不用理会以后执行时的真正对象类型!”
3、多用组合,少用继承。
4、为了交互对象之间的松耦合设计而努力
5、类应该对扩展开放,对修改关闭。
6、要依赖抽象,不依赖具体类。
7、最少知识原则:只与你的密友谈话。
8、好莱坞原则:别调用我们,我们会调用你。
好莱坞原则给我们一种可以防止“依赖腐败”的方法。当高层组件依赖底层组件,而底层组件又依赖高层组件,而高层组件又依赖侧边组件,侧边组件又依赖底层组件时,依赖腐败就发生了。在这种情况下,没有人会轻易的懂系统是怎么设计的。
在好莱坞原则下,我们允许底层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用低层组件。换句话说就是高层组件对待低层组件的方式就是“别调用我们,我们会调用你”。
9、一个类应该只有一个引起变化的原因。