首頁 >後端開發 >C++ >您可以在不犧牲功能的情況下消除朋友依賴嗎?

您可以在不犧牲功能的情況下消除朋友依賴嗎?

Patricia Arquette
Patricia Arquette原創
2024-11-04 13:35:39709瀏覽

Can You Remove Friend Dependencies Without Sacrificing Functionality?

重新思考並發訪問管理的好友依賴

簡介

在本文中,我們深入研究嘗試刪除負責管理同步的兩個類別之間的「朋友」依賴項時面臨的挑戰對共享資源的讀取/寫入存取。引入友元依賴關係是為了向 ClassAAccessor 提供對 ClassA 受保護方法的訪問,確保客戶端只能透過 ClassAAccessor 及其生命週期行為與 ClassA 進行互動。

了解友元依賴關係

最初的設計依賴於 ClassA 和 ClassAAccessor 之間的友元依賴關係。這種依賴關係允許 ClassAAccessor 存取 ClassA 的受保護方法,從而使其能夠管理共享資源的鎖定和解鎖。然而,由於各種原因,不鼓勵使用友元依賴項,包括它們可能會引入維護問題。

重建過程

要刪除友元依賴項,我們遵循三個-步驟過程:

  1. 引入抽象介面:我們建立一個抽象接口, InternalInterface,表示先前可透過友元聲明存取的操作。 ClassA 是 InternalInterface 的實現,但泛化受到保護以保持封裝性。
  2. 將操作移至介面: 建立「呼叫」依賴項的操作(之前由friend)從 ClassA 移至InternalInterface。這在介面和實作之間建立了清晰明確的關係。
  3. 黏合實作:在實作中,我們為 ClassAAccessor 提供了一種方法來取得對 InternalInterface 的引用,使其能夠存取必要的操作。這是透過 ClassA 中的一個方法實現的,該方法允許 ClassAAccessor 設定其內部InterfaceRef 變數。

優點和缺點

這種方法有以下優點:

  • 刪除有問題的好友依賴
  • 提高了可維護性並減少了耦合

但是,也有一些缺點需要考慮:

  • 由於引入抽象而增加了程式碼複雜性介面
  • 介面
  • 與使用友元聲明相比,效能可能會降低(儘管這可以透過仔細地緩解)實施)

結論

透過遵循概述的步驟,我們成功地重構了設計,以刪除好友依賴性,同時保持所需的功能。此重構引入了多個優點,包括提高了可維護性,同時也強調了此類變更中涉及的潛在權衡。

以上是您可以在不犧牲功能的情況下消除朋友依賴嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn