程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++設計模式之適配器模式(三)

C++設計模式之適配器模式(三)

編輯:C++入門知識

C++設計模式之適配器模式(三)


4、適配器模式總結

在對象適配器模式中,適配器與適配者之間是關聯關系;在類適配器模式中,適配器與適配者之間是繼承關系。不論是對象適配器還是類適配器,適配器模式都將現有接口轉化為客戶類所期望的接口,實現了對現有類的復用。為了避免兩個或者多個事物之間直接耦合,應該如何分配職責? 大多數情況都可以通過增加一層間接性來解決,將職責分配給中介對象,使其作為其他構件或服務之間的媒介,以避免他們之間的直接耦合。在適配器模式中,為了避免客戶類和與適配者類直接耦合,也就是客戶類直接訪問適配者類,可以增加一個適配器類,降低客戶類與適配者類的耦合性。當客戶類調用適配器的方法時,在適配器類的內部將調用適配者類的方法,而這個過程對客戶類是透明的,客戶類並不直接訪問適配者類。它是一種使用頻率非常高的設計模式,在軟件開發中得以廣泛應用。

1.主要優點

無論是對象適配器模式還是類適配器模式都具有如下優點:

(1) 將目標類和適配者類解耦,通過引入一個適配器類來重用現有的適配者類,無須修改原有結構。

(2) 增加了類的透明性和復用性,將具體的業務實現過程封裝在適配者類中,對於客戶端類而言是透明的,而且提高了適配者的復用性,同一個適配者類可以在多個不同的系統中復用。

(3) 靈活性和擴展性都非常好,通過使用配置文件,可以很方便地更換適配器,也可以在不修改原有代碼的基礎上增加新的適配器類,完全符合“開閉原則”。

具體來說,類適配器模式還有如下優點:

由於適配器類是適配者類的子類,因此可以在適配器類中置換一些適配者的方法,使得適配器的靈活性更強。

對象適配器模式還有如下優點:

(1) 一個對象適配器可以把多個不同的適配者適配到同一個目標;

(2) 可以適配一個適配者的子類,由於適配器和適配者之間是關聯關系,根據“裡氏代換原則”,適配者的子類也可通過該適配器進行適配。

2.主要缺點

類適配器模式的缺點如下:

(1) 對於Java、C#等不支持多重類繼承的語言,一次最多只能適配一個適配者類,不能同時適配多個適配者;

對象適配器模式的缺點如下:

與類適配器模式相比,要在適配器中置換適配者類的某些方法比較麻煩。如果一定要置換掉適配者類的一個或多個方法,可以先做一個適配者類的子類,將適配者類的方法置換掉,然後再把適配者類的子類當做真正的適配者進行適配,實現過程較為復雜。

3.適配器模式具體應用

(1)復用已經寫好的功能模塊,例如:已經寫好了一個員工信息模塊,要重新開發一個新的企業管理系統,可以復用員工信息模塊。

(2)程序運行時的日志信息,可以記錄到數據庫,也可以記錄到Txt文件中。現在變更需求,使日志信息能夠同時記錄到數據庫和Txt文件中。可以添加一個適配器類,適配數據庫操作和文件操作。

(3)在軟件開發過程中,我們會開發出一些功能性模塊。如排序算法模塊、查找模塊、或者封裝鏈表、隊列、樹等操作。在需要復用這些功能的時候,直接使用,無需重新開發這些功能模塊。

(4)網上銀行加密模塊開發: 已經開發好了一套網銀加密模塊,現在需要重新開發一個類似的軟件,可以直接復用已經開發好的加密模塊。

(5)某公司已經開發了一套火車票識別軟件,包含二值化、去噪、版面分析、欄目提取等模塊。現在要開發銀行卡識別項目,則可以直接復用火車票識別中的功能模塊。

(6)某公司想要開發一套輸入法軟件,可以購買搜狗輸入法的搜索模塊,直接加以復用,無需自己重頭開發。

(7)生活中的適配器: 電源適配器,USB轉串口線,水管專修工人使用各種接口連接本來沒法進行相連的管道。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved