我一直在阅读有关解决软件设计中的循环依赖的不同答案,我仍然无法得到它.请帮我理解. 假设我有A类和B类调用彼此的方法: class A { public: void Do1() { B b; b.Do1(); } void Do2() { //do something
假设我有A类和B类调用彼此的方法:
class A {
public:
void Do1() {
B b;
b.Do1();
}
void Do2() {
//do something
}
};
class B {
public:
void Do1() {
//do something
}
void Do2() {
A a;
a.Do2();
}
};
根据单一责任原则完全划分课程.
看起来我不能在这里应用依赖倒置原则,因为我只能将一个类聚合到另一个类中.
根据最好的设计实践,你能告诉我如何处理这个问题的正确方法吗?
我会用一些代码感谢你的回答.
您需要通过将循环依赖项放入另一个类来删除它.从高层次来看,循环依赖是两个类可以相互交互的众多方式之一.正确的方法是让它们通过明确地彼此交互而使它们彼此松散地耦合,这让你可以独立地改变类.请检查调解员模式.在以下示例中,类C是逻辑中介.class A {
public:
void Do2() {
//do something
}
};
class B {
public:
void Do1() {
//do something
}
};
class C
{
private A a;
private B b;
C(A a, B b)
{
this.a = a; this.b = b;
}
public void A_do1 { b.do1(); }
public void B_do2 { a.do2(); }
}
