不确定标题是否抓住了我在这里想说的内容。
在OO中进行设计时,我应该将对象分割成最具体的区域 - 所以如果我有一个工厂对象来处理创建对象,但后来我遇到了另一种创建对象的方法,即使它们可能是相同的对象是值得创建一个单独的fcatory或只是添加到exsiting。
我最大的担心是用大量的东西来填补课程,或者拆分物品并将我的项目稀释成大量的课程。
任何帮助?
修改
我想我的旁注/子主题部分想要找出你应该在程序中使用的粒度级别。那种,你有多低?
答案 0 :(得分:4)
我最大的担心是用大量的东西来填补课程,或者 分裂物体,稀释我的 项目进入了一个阶级海洋
这是一个非常有效的观点,在任何规模合理的项目中都非常难以预先确定,特别是因为在大多数情况下,需求本身会随着时间的推移逐渐发展。 这就是“重构”的用武之地。你根据自己在任何特定时刻所知道的内容进行设计,并尽量不要对你认为系统可能发展到的内容做出太多的信念。
鉴于您现在知道自己正在构建什么,您可以设计您的类,以尽可能充分利用OO概念 - 例如封装/多态。正如其他人所指出的那样,这本身就是非常难以实现的,而且在设计OO系统以及领域知识方面的经验确实可以派上用场。
根据您所知道的设计 - >建立它 - >检讨它 - >重构它 - >重新设计 - >它一直在继续..
答案 1 :(得分:1)
找到正确的详细程度和责任是OOP设计如此困难的原因。我们可以帮助您解决具体案例,但不能提供任何一般性案例。如果有算法或严格的方法来解决这个问题,那么每个人都可以成为OOP设计师。
答案 2 :(得分:1)
我喜欢决定的经验法则“现在变得太大了吗?”是“我能简明扼要地解释它的目的吗?”如果你开始不得不引入警告和许多狡猾的词来解释你的设计组件的功能(无论是类,成员变量,方法还是其他),它可能是一个很好的指标,它变得过于复杂,应该分开
答案 3 :(得分:1)
在您的具体情况下,如果您已经拥有工厂对象,那么干燥原则(不要重复自己)会说创建另一个做同样事情的工厂是个坏主意。
这是您面临的实际问题吗?或者只是担心你的代码将来会如何发展?
答案 4 :(得分:0)
如果您使用相同类型的对象来解决截然不同的问题,那么您可能需要重新设计该类以专注于关注点的分离。如果您需要更具体的答案,则需要提供需要此功能的类类型的示例。
我可能已经措辞严厉了 Q.我想我不会重复 我自己只是一个例子 在哪里放置代码,它可能是 加入了现有的工厂 创建用于表达的设计对象 数据以优于电子表格。在 另一方面,我可以看到它也可以 有自己的工厂进口 excel数据。两家工厂都会 产生相同的对象,但内在 运作完全不同。 -
如果您没有做或计划进行任何类抽象(子类化或使用接口),您可能根本不需要使用工厂模式。工厂模式通常最适合提供基类类型的对象或实现特定接口的对象。
答案 5 :(得分:0)
这两个 工厂也会生产同样的产品 对象,但内部工作是 完全不同。
不确定我是否理解正确,但这听起来像是AbstractFactory模式的候选人。