1“开-闭”原则:一个软件实体应该对扩展开放,对修改关闭,这个原则说的是,在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,换言之,应当可以在不被修改源代码的情况下改变这个模块的行为。
2对可变性的封装原则:找到一个系统的可变因素,将它封装起来。
3将一个进行多次条件转移的商业逻辑封装到不同的具体子类中,从而使用多态性来代替条件转移语句。
4由于抽象类不可以实例化,因此一个设计师设计一个新的抽象类,一定是用来继承的,而这一声明倒过来也是对的:具体子类不是用来继承的。
5在一个从抽象类到多个具体类的继承关系中,共用的代码应当尽量移动到抽象类里。
6与代码的移动方向相反,数据的移动方向是从抽象类到具体类。
7一般而言,如果两个具体类A和B有继承关系,那么一个最简单的修改方法应当是建立一个抽象类C,然后让类A和类B成为抽象类C的子类。
8要针对接口编程,不要针对实现编程,要保证做到这一点,一个具体Java类应当只实现Java接口和抽象Java类中而不应当给出多余的方法。
9只要一个被引用的对象存在抽象类型,就应当在任何引用此对象的地方使用抽象类型,包括参量的类型声明、方法返回类型的声明、属性变量的类型声明等。
10优先考虑将一个类设置为不变类,即使一个类必须是可变类,在给它的属性设置赋值方法的时候,也要保持吝啬的态度。
11尽量降低成员的访问权限。
12如果一个类可以设置成package-private的,那么就不应当将它设置为public。
13在需要一个变量的时候才声明它,可以有效地限制局部变量的有效范围。
14一般而言,for循环比while循环稍好一点。
15要针对抽象编程,不要针对具体编程。