我对OO设计没有足够的把握,无法确定我是否在设计应用程序。
这是一个简单的想法:
我想编写一个在Metro上旅行的应用程序。
我开始定义以下内容:
Trainline接口,其中定义了一些方法。
然后创建一个名为Lines的具体类。
Lines类什么也没做。
它具有类似getNumberOfStations()的方法,但不知道任何数目的工作站,因此仅返回null。
然后,我有一个CentralLine类来完成实际工作,这扩展了Lines,并提供了实际的实现。
问题:
我需要“线”具体课程吗?我是否应该不让CentralLine和CircleLine实施TrainLines(伦敦地铁上的这两个火车线)?
还是应该删除TrainLines接口,而只拥有Lines具体类?
还是TrainLines应该是抽象类?
接口或Lines超类是否提供任何值,除了漂亮的类映射图外……请参见上文:)
OO可以为我做些什么很酷的事情?我应该如何处理OO设计?
谢谢 !!!!
最佳答案
为什么不将您的Lines
类设置为abstract
?您将不会遇到“返回null” =>非常难看的问题。
在这种情况下,您将不再具有TrainLines
接口。
如果您打算处理实现方式确实不同的许多不同类型的TrainLines
,则Lines
接口将很有趣。因此,通过在代码中使用TrainLines
类型引用不同的类,您将获得极大的多态性。
综上所述,两种解决方案:Lines
作为抽象类紧随其后的是具体类。TrainLines
作为接口,后跟Lines
(或其他类型),而抽象类后跟具体类。
请记住,实现接口的抽象类不需要实现方法。确实,抽象类可以将这种责任推迟到具体类上。因此,无需实现虚拟return null
;)