加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

设计模式 – 设计:类循环依赖?

发布时间:2020-12-14 04:54:08 所属栏目:百科 来源:网络整理
导读:我一直在阅读有关解决软件设计中的循环依赖的不同答案,我仍然无法得到它.请帮我理解. 假设我有A类和B类调用彼此的方法: class A { public: void Do1() { B b; b.Do1(); } void Do2() { //do something }};class B { public: void Do1() { //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(); }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读