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 潘: 反应业务内涵的才是最好的,很多设计模式的书属于炫耀,不要理他。
|