我对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;)

09-25 17:42