人們可能會遇到這樣的場景:刪除兩個類別之間的「 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中文網其他相關文章!