以下情况我不知道如何做对:
我的C#-Application有一个 ClassA ,我必须扩展一些功能。这是通过 ClassB 完成的,引用 ClassA 和"包装","装饰","适应" (或任何模式)班级。 我的 ClassA 定义了 ClassB 使用的一些数据类型,并为其他人公开。
因此,如果我的 ClassC 想要引用 ClassB ,它还必须引用 ClassA ,因为它具有类型的定义。
我不认为这是正确的:当我绕过一个类时,另一个使用包装类的类不应该知道有关包装类的任何内容。
我可以复制粘贴 ClassB 中的类型,但如果有变化,我必须做两次,我不认为这是正确的。
任何想法如何解决?
非常感谢, 约尔格
答案 0 :(得分:0)
“你选择什么样的模式”对于这件事很重要,因为它会塑造你的设计;) 由于您似乎想隐藏 ClassA的界面,Adapter模式将是相关的。 (使用Decorator模式,ClassB也会继承ClassA,导致ClassA公开的相同数据类型也会被ClassB公开。)
现在回到问题:
看来你没有一个完美的解决方案。我们在ClassA TypeA 和ClassB TypeB 中调用数据类型。您要么将TypeA重用于TypeB并在两者之间创建依赖关系,要么使TypeB完全独立并重复自己。
如果您有令人信服的理由将 ClassA 与系统的其他部分完全分离,则可以使TypeA独立。它会违反 DRY ,但如果ClassA属于第三方并且他们决定更改其界面,则您的客户不会受到影响。
但是,在不太引人注目的案件中,这可能是一种矫枉过正。如果您拥有ClassA的代码,那么您可以将TypeA放在ClassA之外,以便所有其他客户端在没有(直接)依赖于ClassA的情况下使用它。