java开发-java面向对象设计原则经验分享

2024-11-13 02:03:38

1.尽量减少类和协作者之间传递的消息的数量。

2.尽量减少类和协作者之间的协作量,也即:减少类和协作者之间传递的不同消息的数量。

3.尽量减少类的协作者的数量。一个类用到的其他类的数目应当尽量少。

4.尽量减少类的扇出,也即:减少类定义的消息数和发送的消息数的乘积。

5.类中定义的大多数方法都应当在大多数时间里使用大多数数据成员。

java开发-java面向对象设计原则经验分享

6.让系统功能在窄而深的继承体系中垂直分布。

7.类必须知道它包含什么,但是不能知道谁包含它。

8.共享字面范围(也就是被同一个类所包含)的对象相互之间不应当有使用关系。

9.继承只应被用来为特化层次结构建模。

10.派生类必须知道基类,基类不应该知道关于它们的派生类的任何信息。

java开发-java面向对象设计原则经验分享

11.我们在创建应用程序的分析模型时常常引入代理类。在设计阶段,我们常会发现很多代理没有用的,应当去除。

12.如果类包含另一个类的对象,那么包含类应当给被包含的对象发送消息。也即:包含关系总是意味着使用关系。

13.在类的构造函数中实现语义约束时,把约束测试放在构造函数领域所允许的尽量深的包含层次中。

14.Java面向对象中,约束所依赖的语义信息如果经常改变,那么最好放在一个集中式的第3方对象中。

15.约束所依赖的语义信息如果很少改变,那么最好分布在约束所涉及的各个类中。

java开发-java面向对象设计原则经验分享

16.在理论上,继承层次体系应当深一点,越深越好。

17.基类中的所有数据都应当是私有的,不要使用保护数据。类的设计者永远都不应该把类的使用者不需要的东西放在公有接口中。

18.在实践中,继承层次体系的深度不应当超出一个普通人的短期记忆能力。一个广为接受的深度值是6.(41)所有的抽象类都应当是基类。

19.类包含的对象数目不应当超过开发者短期记忆的容量。当类包含多于6个数据成员时,可以把逻辑相关的数据成员划分为一组,然后用一个新的包含类去包含这一组成员。

20.在实现语义约束时,最好根据类定义来实现。这常常会导致类泛滥成灾,在这种情况下,约束应当在类的行为中实现,通常是在构造函数中实现,但不是必须如此。

猜你喜欢