【发布时间】:2013-11-25 22:43:13
【问题描述】:
我在使用 Pharo 设计 OO 应用程序时有点吃力。
我有一个类Household,这个类有一个名为tvConnection的属性。该对象是Digital 或Analog 的一个实例。这两个类都继承自超命名TVSubscription。
如果我想在我的模拟有线电视订阅中添加电视,我可以简单地在我的tvConnection 属性上调用addTV: aTelevision,然后它会正确调用我在Analog 类中实现的addTV: 方法。
数字连接不能连接电视。这些必须是SetTopBox 设备,而这些设备又可以连接电视。
现在,我必须抛出一个错误/显示一些输出,以防用户尝试将电视添加到具有数字连接的家庭。
我认为我可以做两件事:
1)
我可以在Digital 类中实现addTV: 方法,该方法将简单地执行所需的操作(例如,显示一条消息“你不能这样做!”)。但这在很多方面似乎都是错误的..
2)
我无法实现该方法并捕获引发的MessageNotUnderstood 错误。
当我执行以下操作时会发生这种情况:
**Adding a TV**
--> call `addTelevision` in `Household`
----> this `addTV:` on the `tvConnection` property
----> catch error if any, which implies that a TV was being added to a digital connection
这两种解决方案在我看来都非常肮脏。
【问题讨论】: