面向对象设计61点经验原则讨论----1-10
yjdn 2006-02-03 03:36:17 /**************************************
*
*在网上只找不到<<OOD启示录>>
*只有这61条经验,很多东西从字面上还
*无法理解,所以,现在拿出来,一方面请教大家
*另一方面,有理解冲突的地方,大家可以讨论
*讨论.
*
**************************************/
(1)所有数据都应该隐藏在所在的类的内部。p13
//
//所有数据是否可以理解为Sql语句等,隐藏理解为就是放在类内?
//
(2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15
//
//在这里,什么叫作类的作用者?
//
(3)尽量减少类的协议中的消息。p16
//
//这个看不明白
//
(4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 p16
//
//我理解是,创建类,要有一个最基本的公有接口,但是有必要所有的类都需要一个接口吗?
//
(5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。p17
如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。
//
//公共的方法的公共代码都写成一个私有的方法?
//
(6)不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。p17
//
//这个应该就是传说中的接口污染
//
(7)类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。 p18
//
//这个理解
//
(8)类应该只表示一个关键抽象。p19
包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响 .
//
//不理解什么叫"关键抽象"
//
(9)把相关的数据和行为集中放置。p19
设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。
//
//相关数据和行为集中放置什么意思?
//
(10)把不相关的信息放在另一个类中(也即:互不沟通的行为)。p19
朝着稳定的方向进行依赖.
//
//把不相关信息放在另一个类中,再看一下第四点,这样的类也有必要创建一个接口吗?
//