0

我正在和我的朋友讨论一个练习设计问题,我们想出了不同的解决方案。我们正在学习 OOPS 概念,因此决定在这里向专家展示我们的解决方案并听取他们的意见。

问题:衬衫的设计课。衬衫具有不同的特征,例如图案,尺寸,颜色等。

朋友的解决方法:

衬衫类图

我的解决方案:

带有大量接口的衬衫类图

会有具体的实现,例如 Size 的 small、medium、large。红色、蓝色、黄色代表颜色。使用图案、尺寸、颜色的接口不是矫枉过正吗?多态性应该用于封装行为,但我以不同的方式使用它。

请高手告诉我们,我们应该如何以面向对象的方式来处理 Shirt 的不同特性?如果出现新功能(例如,阴影),如何处理?

4

1 回答 1

3

你朋友的想法很简单,我喜欢从简单的想法开始,并在需要时加以改进。另一方面,您的解决方案提供了极大的灵活性,并且您通过为每个变量使用接口类型而不是本机类型来最大限度地利用 OOP。

关于您在处理新功能时提到的最后一件事,在两种设计中您都必须打开类进行修改,这不是一件好事,因为它违反了 OCP 原则(类应该是开放扩展,关闭以进行修改)。

我会通过让Shirt类保存所有衬衫共有的属性(如尺寸、颜色、价格或其他)并存储其他可能在 aHashMap或 a中变化的特征来解决这个问题PropertyList

这提供了极大的灵活性,因为当新功能出现时,您只需调用一个AddFeature(name, value)将功能存储在HashMap.

我想说清楚一点,不要深入研究设计,让它消耗你的时间。取而代之的是从简单的想法开始,并随着你的进步而改进它们。伟大的设计来自经验和对业务领域的仔细分析。

于 2013-09-08T13:28:43.650 回答