人們可能會遇到這樣的場景:刪除兩個類別之間的“ friend」依賴關係是期望的,特別是由於對過度相互依賴、維護問題和過時的UML 標準的擔憂。
提取「朋友」類別公開的方法並建立一個新的抽象介面。建立從「朋友」類別到介面的依賴關係以及從其他類別到介面的「呼叫」依賴關係。
移動操作構成從依賴類別到抽象介面的「呼叫」依賴關係。使介面擴展受保護的建構函數以實現繼承目的,並隱藏依賴類別和介面之間受保護的泛化關聯。
最後一步,建立一個方法在「friend」類別中將抽象介面的引用傳遞給依賴類別。在初始化期間從依賴類別呼叫此方法以建立必要的連接。
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;
};
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3