所在位置:答疑 - 内容   
交换箱和组件是应当设计成接口还是抽象类
 

2006-12-21  13:59:18  钱志:  我在设计类图的时候遇到了点困惑,就是什么时候用抽象类,什么时候用接口,二者有什么是用的区别 
2006-12-21  14:00:21  潘:  举一个具体项目的例子 
2006-12-21  14:00:40  钱志:  好的,还是拿工程院的项目 
2006-12-21  14:01:03  钱志:  交换箱分为内部交换箱和渠道箱两种 
2006-12-21  14:01:40  钱志:  具体的构造稍有不同,内部交换箱可以控制的东西比渠道箱多 
2006-12-21  14:02:01  钱志:  也就是我又设计了个组件类 
2006-12-21  14:02:18  钱志:  这个类代表交换箱上的各个组件 
2006-12-21  14:02:43  钱志:  交换箱可以对各个组件进行控制 
2006-12-21  14:03:28  钱志:  每个组件又是不同的具体类 
2006-12-21  14:04:09  钱志:  我的疑问就是,交换箱和组件是应当设计成接口还是抽象类。 
2006-12-21  14:04:42  潘:  这主要依赖于对业务的理解 
2006-12-21  14:05:20  潘:  抽象类和接口都可以达到抽象和具体分离的效果 

2006-12-21  14:05:40  钱志:  以前都是按照抽象类设计的,但是现在学习各种模式,有点疑惑了 
2006-12-21  14:05:42  潘:  但泛化更加本质 
2006-12-21  14:06:18  潘:  也就是说:交换箱分为内部交换箱和渠道箱两种,这是泛化关系 

2006-12-21  14:06:29  钱志:  是 
2006-12-21  14:07:39  潘:  但如果说"内部交换箱"同时还兼备一种特别的功能(例如自我烧毁,我随便说),这种功能又是别类的对象也会有的, 
2006-12-21  14:07:46  潘:  这个时候用接口 
2006-12-21  14:07:56  潘:  "自焚"接口 

2006-12-21  14:08:07  钱志:  对于组件呢?组件是指交换箱上的各个控制开关、灯、显示器等等 
2006-12-21  14:08:12  潘:  如果搞不清楚,那么抽象类优先 
2006-12-21  14:09:04  潘:  有很多接口的设计,肯定对业务理解不清楚,或者根本不是从业务内涵角度考虑 

2006-12-21  14:09:39  钱志:  组件的行为各不相同 
2006-12-21  14:10:25  潘:  那当然了 
2006-12-21  14:10:39  潘:  如果都没有任何共同点,不需要抽象 
2006-12-21  14:10:50  潘:  你为什么想要抽象一个"组件"? 
2006-12-21  14:11:02  潘:  它们有什么共同的地方吗 
2006-12-21  14:11:12  潘:  还是只是都在交换箱里头

2006-12-21  14:11:28  钱志:  交换箱上的各个组件我认为和交换箱是聚合的关系 
2006-12-21  14:11:51  钱志:  例如灯有四个,代表交换箱里信件的状态 
2006-12-21  14:12:01  潘:  是,但也不需要"组件"啊 
2006-12-21  14:12:13  潘:  那是"灯"类 

2006-12-21  14:12:42  钱志:  呵呵,有点明白了,把问题看得过于复杂了 
2006-12-21  14:13:05  潘:  你就老老实实"说人话"来建模就行了 
2006-12-21  14:13:54  钱志:  总想把设计搞得好看点 
2006-12-21  14:15:19  潘:  反应业务内涵的才是最好的,很多设计模式的书属于炫耀,不要理他。