在研究大型应用程序的C ++源代码时,我发现了这种模式(示例的语法可能很粗略,但基本的细节都在那里):
class A : X
friend B;
B *parent;
...stuff...
class B : Y
friend A;
A *myhelper;
...stuff...
B类真的名为AHelper也许是有意义的,但我对两个类之间相当对称的关系更加好奇。这是标准GoF模式之一,还是既定的反模式?除了细节之外,是否有一些理解或理解这一点的方法,整体比部分更大?
将A和B组合成一个类是否合理?每个类的问题都是从其他类X,Y继承的。我渴望重构这些代码,使其更易于维护和更小。
答案 0 :(得分:4)
取决于课程的作用。如果它类似于迭代器模式(即std::vector<t>
和std::vector<t>::iterator
),那么它可以用于好事。
另一方面,如果这些类做了根本不同的事情,那么最好只使用它们的公共接口彼此接触。
换句话说,我不认为这是一种模式或反模式 - 它完全取决于所讨论的实际类的使用。
答案 1 :(得分:0)
A和B紧密耦合,但它们的寿命可能不同。如果符合以下条件,可能值得制作一个类:
但事实并非如此。
鉴于A派生自X,B派生自Y,当我有联合耦合类时,它通常是耦合的基类,并且每个类不与另一个类的实际具体类交互。
在这些情况下,它不是单一的生命周期关系,实际上我有一个主对象可以创建并加载较小的对象,这些对象会返回到主服务器以获取更多信息。
我不知道该模式是否有名称。我从未对设计模式名称感兴趣。