你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。
-----Arthur J.Riel
(31)在类的构造函数中实现语义约束时,把约束测试放在构造函数领域所允许的尽量深的包层次中。
(32)约束所依赖的语义信息如果经常改变,那么最好放在一个集中式的第3方对象中。<o:p></o:p>
(33)约束所依赖的语义信息如果很少改变,那么最好分布在约束所涉及的各个类中。<o:p></o:p>
(34)类必须知道它包含什么,但是不能知道谁包含它。<o:p></o:p>
(35)共享字面范围(也就是被同一个类所包含)的对象相互之间不应当有使用关系。<o:p></o:p>
(36)继承只应被用来为特化层次结构建模。<o:p></o:p>
(37)派生类必须知道基类,基类不应该知道关于它们的派生类的任何信息。<o:p></o:p>
(38)基类中的所有数据都应当是私有的,不要使用保护数据。<o:p></o:p>
类的设计者永远都不应该把类的使用者不需要的东西放在公有接口中。<o:p></o:p>
(39)在理论上,继承层次体系应当深一点,越深越好。<o:p></o:p>
(40)在实践中,继承层次体系的深度不应当超出一个普通人的短期记忆能力。一个广为接受的深度值是6。<o:p></o:p>
(41)所有的抽象类都应当是基类。<o:p></o:p>
(42)所有的基类都应当是抽象类。<o:p></o:p>
(43)把数据、行为和/或接口的共性尽可能地放到继承层次体系的高端。<o:p></o:p>
(44)如果两个或更多个类共享公共数据(但没有公共行为),那么应当把公共数据放在一个类中,每个共享这个数据的类都包含这个类。 <o:p></o:p>
(45)如果两个或更多个类有共同的数据和行为(就是方法),那么这些类的每一个都应当从一个表示了这些数据和方法的公共基类继承。 <o:p></o:p>
(46)如果两个或更多个类共享公共接口(指的是消息,而不是方法),那么只有他们需要被多态地使用时,他们才应当从一个公共基类继承。 <o:p></o:p>
(47)对对象类型的显示的分情况分析一般是错误的。在大多数这样的情况下,设计者应当使用多态。<o:p></o:p>
(48)对属性值的显示的分情况分析常常是错误的。类应当解耦合成一个继承层次结构,每个属性值都被变换成一个派生类。 <o:p></o:p>
(49)不要通过继承关系来为类的动态语义建模。试图用静态语义关系来为动态语义建模会导致在运行时切换类型。<o:p></o:p>
(50)不要把类的对象变成派生类。对任何只有一个实例的派生类都要多加小心。<o:p></o:p>
(51)如果你觉得需要在运行时刻创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。 <o:p></o:p>
(52)在派生类中用空方法(也就是什么也不做的方法)来覆写基类中的方法应当是非法的。<o:p></o:p>
(53)不要把可选包含同对继承的需要相混淆。把可选包含建模成继承会带来泛滥成灾的类。<o:p></o:p>
(54)在创建继承层次时,试着创建可复用的框架,而不是可复用的组件。<o:p></o:p>
(55)如果你在设计中使用了多重继承,先假设你犯了错误。如果没犯错误,你需要设法证明。<o:p></o:p>
(56)只要在面向对象设计中用到了继承,问自己两个问题:(1)派生类是否是它继承的那个东西的一个特殊类型?(2)基类是不是派生类的一部分?<o:p></o:p>
(57)如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类。<o:p></o:p>
(58)在面向对象设计中如果你需要在包含关系和关联关系间作出选择,请选择包含关系。<o:p></o:p>
(59)不要把全局数据或全局函数用于类的对象的薄记工作。应当使用类变量或类方法。<o:p></o:p>
(60)面向对象设计者不应当让物理设计准则来破坏他们的逻辑设计。但是,在对逻辑设计作出决策的过程中我们经常用到物理设计准则。
(61)不要绕开公共借口去修改对象的状态。
分享到:
相关推荐
下面我们将详细探讨61条面向对象设计的经验原则,这些原则旨在帮助我们创建更加清晰、可维护和可扩展的代码。 1. **单一职责原则(Single Responsibility Principle, SRP)**:每个类或模块应该只有一个改变的原因...
编程心之61条面向对象设计的经验原则
61条面向对象设计的经验原则 HTML文档
以下是对给定文件中提到的61条面向对象设计经验原则的详细解读: 1. **避免过度设计**:在设计之初,应避免过于复杂的架构,以免增加不必要的复杂度。 2. **使用成熟的框架而非自创轮子**:当有现成的、经过验证的...
java 61条面向对象设计的经验原则 (1)所有数据都应该隐藏在所在的类的内部。p13 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15 (3)尽量减少类的协议中的消息。p16
以上是对给定文件标题、描述及部分内容中提及的面向对象设计原则的部分解释。这些原则涵盖了面向对象设计的各个方面,从封装、依赖管理、方法设计到系统架构等多个层面提供了宝贵的指导建议。遵循这些原则可以帮助...
### JAVA技术61条面向对象设计的经验原则 ...以上61条经验原则旨在帮助开发者更好地进行面向对象设计,提高软件的质量和可维护性。遵循这些原则,并结合实际项目特点灵活运用,将有助于构建出高效、稳定的软件系统。