我需要扩展一个类(在C ++中,但我认为这个问题与语言无关),其功能可以通过两种不同的方式实现:
两种选择都有优点和缺点:
有没有人明确规定何时在课堂上添加新功能,而不是将其放在课堂外的观察者中?
答案 0 :(得分:1)
我认为在这种情况下(和很多人一样) - 这取决于。这是一个在你正在解决的问题的背景下知道什么是合适的情况。
从纯粹的意义上讲,你可能会认为Observer模型在未来可能更容易扩展和操作。然而,如果实际上必须在合理的时间范围内工作,这种纯粹的观点很少考虑到实际的现实。
很可能观察者模型对你很好。但逻辑时间是否批评,是否可能很昂贵?如果这些是您的实施中重要的事情,那么您必须记录它们。
不幸的是,只有你可以告诉 - 虽然它可能在一种情况下运作良好,但概念上类似的情况可能有不同的约束,并且使用相同的设计表现不佳(或完全不切实际)。
所以,回答你的问题:不 - 我真的不认为任何人都可以说有明确的规则。
人们可能有偏好,而且他们更多或大部分都适用。但我怀疑它们是否会普及。
你将不得不考虑它 - 但这就是让它变得有趣的原因!
答案 1 :(得分:1)
扩展功能的一种常用方法是Extension Interface pattern,如POSA1中所述。
您可能考虑的另一种模式是Proxy pattern。如果逻辑是离散,则可以将代理对象链接到彼此,并通过接口单独引用它们。这应该允许您将逻辑很好地分布在几个独立且可互换的对象上。
鉴于我对你的情况了解不多,我对设计提出更多建议有点困难。但我希望这会有所帮助。