我正在和我的朋友讨论一个练习设计问题,我们想出了不同的解决方案。我们正在学习 OOPS 概念,因此决定在这里向专家展示我们的解决方案并征求他们的意见。
问题:衬衫设计课程。衬衫有不同的特点,如图案、尺寸、颜色等
朋友的解决方案:
我的解决方案:
会有具体的实现,例如Size有小、中、大。颜色为红色、蓝色、黄色。使用图案、尺寸、颜色接口是不是有点过分了?多态性应该用于封装行为,但我以不同的方式使用它。
请问有高手可以告诉我们应该如何以面向对象的方式保存衬衫的不同特性吗?如果出现新功能(例如色调),如何处理?
你朋友的想法很简单,我喜欢从简单的想法开始,并在需要时改进它们。另一方面,您的解决方案提供了极大的灵活性,并且您通过为每个变量使用接口类型而不是本机类型,将 OOP 发挥到了极致。
关于您提到的处理新功能的最后一件事,在这两种设计中,您都必须开放类进行修改,这不是一件好事,因为它违反了 OCP 原则(类应该开放扩展,关闭修改)。
我会通过让
Shirt
类保存所有衬衫共有的属性(如尺寸、颜色、价格或其他内容)来解决这个问题,并存储 HashMap
或 PropertyList
中可能变化的其余特征。
这提供了很大的灵活性,因为当新功能出现时,您只需调用像
AddFeature(name, value)
这样的方法,将功能存储在 HashMap
中。
我想明确一点,不要深入研究设计,让它消耗你的时间。相反,从简单的想法开始,然后不断改进它们。伟大的设计来自于经验和对业务领域的仔细分析。
Lux Line 服装衬衫
我们是专为男士制作定制衬衫的专家。我们拥有技能、最好的面料、才华横溢的设计师, 以及超过 110,000 名可为我们提供担保的满意客户。我们已经这样做了十多年,而且我们真的 为我们的工作感到自豪。我们成功的秘诀是什么?我们非常专注于为男士制作最好的定制衬衫,并且我们致力于此。 我们的衬衫专为您量身定制,所有尺寸均由专家测量并量身定制,完美贴合您的体型。 了解更多:定制正装衬衫