首頁  >  文章  >  後端開發  >  如何重構「朋友」依賴聲明:消除過度相互依賴的逐步指南?

如何重構「朋友」依賴聲明:消除過度相互依賴的逐步指南?

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