人们可能会遇到这样的场景:删除两个类之间的“friend”依赖期望的,特别是因为担心过度的相互依赖、维护问题和过时的 UML 标准。
提取“朋友”类公开的方法并创建一个新的抽象接口。建立从“朋友”类到接口的依赖关系以及从其他类到接口的“调用”依赖关系。
移动操作构成从依赖类到抽象接口的“调用”依赖关系。使接口扩展受保护的构造函数以实现继承目的,并隐藏依赖类和接口之间受保护的泛化关联。
最后一步,创建一个方法在“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>
以上是如何重构“朋友”依赖声明:消除过度相互依赖的分步指南?的详细内容。更多信息请关注PHP中文网其他相关文章!