我有两个设计可以达到相同的效果。
-------Design A
MainClass有一个列表和两个方法。这些方法创建一个自治对象并添加到列表中。超类的原因,B和C是相似的,我将添加更多的子类。此外,我还可以利用后面的多态性。
-------Design B
mainclass有两种方法。该方法使用MiddleClass创建聚合链接,并直接调用Mainclass方法,后者返回b/c类的自治对象。
不太可能的A,B受益于来自MainClass的更高程度(松散)耦合,其中middleclass处理从继承层次结构到主类的信息--当然,我添加的子类越多,主类就不会有到层次结构的任何附加链接,而是全部由中间层处理。
然而,我不确定我是只是过度设计,还是它是一个更好的设计。你们认为什么是更好的设计,为什么?
发布于 2014-12-24 19:19:41
在这两种设计中,MainClass都必须了解ClassB和ClassC (以及任何未来的派生类),以提供创建和添加新列表元素的方法。这使得在MainClass用户当前的界面下,第一个设计是最简单的设计,也是两者中最好的一个。
但是,可以通过将MainClass和MiddleClass解耦来创建更好的设计。
MainClass只需要提供一个方法来向列表中添加(已经创建)项。
MiddleClass实际上是一个工厂类,正如注释中已经指出的那样,应该使用户可以使用它来创建应该添加到列表中的项。
这样,如果向层次结构中添加了新的类,则不需要更新MainClass,而只需要更新MiddleClass。
https://softwareengineering.stackexchange.com/questions/267321
复制相似问题