【发布时间】:2012-12-04 15:09:48
【问题描述】:
我正在设计一个使用异步 HTTP 下载的应用程序。我希望这个应用程序可以在 Android、Windows 桌面和 Mac OS 桌面上运行,这就是我使用 Java 开发它并尝试使其非常模块化的原因。
(为清楚起见进行编辑,我使用的库是 AsyncHttpClient 和 Android-Async-Http)
我已经有库来处理下载,但问题是 CORE 模块中的特定方法必须能够执行下载功能,而不管使用什么库。我对该怎么做有两个想法。
- 想法 1:在 CORE 中放置一个名为
GenericDownloader的抽象类,并使用AndroidDownloader等类在特定应用中扩展它。 - 思路2:在CORE中放入一个名为
DownloadInterface的接口,在具体的应用中实现,方法与思路1类似。
这两个想法的问题是我无法实例化抽象类或接口,那么如何在 CORE 中实现功能呢?
我还能如何解决这个问题?
【问题讨论】:
-
为什么不能实例化抽象类? stackoverflow.com/questions/4587392/…
-
@artbristol:你能详细说明一下吗?
-
@Dreen 我不能说它比 Martin Fowler martinfowler.com/articles/injection.html 更好。
-
@NarendraPathai 他不能,因为这是不可能的。如果不提供所有抽象方法的实现,就无法实例化抽象类或接口。这就是为什么它被称为抽象。
标签: java oop design-patterns module polymorphism