首页  >  文章  >  后端开发  >  如何重构“朋友”依赖声明:消除过度相互依赖的分步指南?

如何重构“朋友”依赖声明:消除过度相互依赖的分步指南?

DDD
DDD原创
2024-11-05 10:02:02369浏览

How to Refactor a

如何重构“friend”依赖声明

背景

人们可能会遇到这样的场景:删除两个类之间的“friend”依赖期望的,特别是因为担心过度的相互依赖、维护问题和过时的 UML 标准。

第 1 步:引入抽象接口

提取“朋友”类公开的方法并创建一个新的抽象接口。建立从“朋友”类到接口的依赖关系以及从其他类到接口的“调用”依赖关系。

第 2 步:将操作移至接口

移动操作构成从依赖类到抽象接口的“调用”依赖关系。使接口扩展受保护的构造函数以实现继承目的,并隐藏依赖类和接口之间受保护的泛化关联。

第 3 步:将实现粘合在一起

最后一步,创建一个方法在“friend”类中将抽象接口的引用传递给依赖类。在初始化期间从依赖类调用此方法以建立必要的连接。

实现

ClassA(提供者):

<code class="cpp">class ClassA : protected InternalInterface {
    public:
        attachAccessor(ClassAAccessor &accessor) {
            accessor.setInternalInterfaceRef(*this);
        }
};</code>

ClassAAccessor(朋友):

<code class="cpp">class ClassAAccessor {
    public:
        ClassAAccessor(ClassA& classA) : internalInterfaceRef(0) {
            classA.attachAccessor(*this);
        }
    private:  
        InternalInterface* internalInterfaceRef;
};</code>

优点

  • 消除类之间不必要的依赖
  • 符合现代 UML 标准
  • 通过向公众隐藏内部操作来实施访问控制

限制

  • 可能会增加代码复杂性
  • 需要抽象接口,影响性能和内存占用
  • 受保护泛化关系的 UML 表示可能具有挑战性

以上是如何重构“朋友”依赖声明:消除过度相互依赖的分步指南?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn