面向对象设计经验原则61点讨论续 之 21-30

yjdn 2006-02-03 04:54:32
/*********************************************
*面向对象设计经验原则61点讨论续 之 21-30
***********************************************/
(21)我们在创建应用程序的分析模型时常常引入代理类。在设计阶段,我们常会发现很多代理没有用的,应当去除。p43

//
//
(22)尽量减少类的协作者的数量。p52
一个类用到的其他类的数目应当尽量少。

//
//什么叫类的协作者?
//

(23)尽量减少类和协作者之间传递的消息的数量。p55

//
//同上
//

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

//
//同上
//

(25)尽量减少类的扇出,也即:减少类定义的消息数和发送的消息数的乘积。p55

//
//
//

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

//
//是否有人可以举例说明一下,这个给对象发送消息.
//

(27)类中定义的大多数方法都应当在大多数时间里使用大多数数据成员。p57

//
//
//

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

//
//不能包含对象过多
//

(29)让系统功能在窄而深的继承体系中垂直分布。p58

(30)在实现语义约束时,最好根据类定义来实现。这常常会导致类泛滥成灾,在这种情况下,约束应当在类的行为中实现,通常是在构造函数中实现,但不是必须如此。p60
//
//什么叫主义约束?
//
...全文
191 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjdn 2006-02-19
  • 打赏
  • 举报
回复
再顶一下,再没人讨论的话,就结帖了
yjdn 2006-02-07
  • 打赏
  • 举报
回复
再顶一下
JackLucifer 2006-02-07
  • 打赏
  • 举报
回复
mark
zeusvenus 2006-02-05
  • 打赏
  • 举报
回复
29 充分利用OOA的长处,reusable
-------------------
笔误,应改为:
29 充分利用OOD的长处,reusable
zeusvenus 2006-02-05
  • 打赏
  • 举报
回复
个人认为:
21 是为了避免分析模型阶段过度设计。

22。22.23 不和陌生人说话原则。

25 解耦

26 用接口实现这样的关系

27 使设计高效

28 纯粹为了方便

29 充分利用OOA的长处,reusable

30 语义约束知道,主义约束没听说过。

mmcl 2006-02-05
  • 打赏
  • 举报
回复
学习
yjdn 2006-02-05
  • 打赏
  • 举报
回复
谢谢楼上
还有没有人补充?
mgphuang 2006-02-05
  • 打赏
  • 举报
回复
1.如果A类的一个方法 MothedA() 需要调用B类的方法MothedB() 则称B为A的MothedA()消息的类协作者。
2.发消息就是指调用函数。比如我调用B.MothedB(),就说我向B发了一条MothedB()消息。
3,主义约束你可以理解为集合类型的约束,比如两个集合的互斥,相交,包含,相等的关系。比如人,男人,女人。此时我们可以通过定义三个类来区分。CPerson,CMan,CWoman
如果是水果,香蕉,苹果,……第N种,这个时候你不可能定义N个水果子类,这种带来类的泛滥,所以你可以通过类的行为来创建,CShuiGuo.Create(TShuiGuoType tst)

记得给分哦。
jc15271149 2006-02-05
  • 打赏
  • 举报
回复
yjdn 2006-02-05
  • 打赏
  • 举报
回复
我再顶
dazhu2 2006-02-03
  • 打赏
  • 举报
回复
gh
yjdn 2006-02-03
  • 打赏
  • 举报
回复
再一下

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧