」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何重構「朋友」依賴聲明:消除過度相互依賴的逐步指南?

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

發佈於2024-11-21
瀏覽:402

How to Refactor a \

如何重構“friend”依賴聲明

背景

人們可能會遇到這樣的場景:刪除兩個類別之間的“ friend」依賴關係是期望的,特別是由於對過度相互依賴、維護問題和過時的UML 標準的擔憂。

步驟 1:引入摘要介面

提取「朋友」類別公開的方法並建立一個新的抽象介面。建立從「朋友」類別到介面的依賴關係以及從其他類別到介面的「呼叫」依賴關係。

步驟 2:將操作移至介面

移動操作構成從依賴類別到抽象介面的「呼叫」依賴關係。使介面擴展受保護的建構函數以實現繼承目的,並隱藏依賴類別和介面之間受保護的泛化關聯。

第 3 步:將實作黏合在一起

最後一步,建立一個方法在「friend」類別中將抽象介面的引用傳遞給依賴類別。在初始化期間從依賴類別呼叫此方法以建立必要的連接。

Implementation

ClassA (provider):

class ClassA : protected InternalInterface {
    public:
        attachAccessor(ClassAAccessor &accessor) {
            accessor.setInternalInterfaceRef(*this);
        }
};

ClassAAccessor (朋友):

class ClassAAccessor {
    public:
        ClassAAccessor(ClassA& classA) : internalInterfaceRef(0) {
            classA.attachAccessor(*this);
        }
    private:  
        InternalInterface* internalInterfaceRef;
};

優點

  • 刪除類別之間不必要的依賴關係
  • 符合現代 UML標準
  • 透過向公眾隱藏內部操作來強制存取控制

限制

  • 可能會增加程式碼複雜性
  • 需要抽象化接口,影響效能和記憶體佔用
  • 受保護泛化關係的UML 表示可能具有挑戰性
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3