程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 我的Design Pattern之旅[6]:Adapter Pattern(OO)(6)

我的Design Pattern之旅[6]:Adapter Pattern(OO)(6)

編輯:關於C語言

執行結果

Hello Adaptee!!

Consequence

Class Adapter和Object Adapter各有優缺點:

Class Adapter

優點:

1.容易override Adaptee原本的行為。

因為Class Adapter繼承了Adaptee,所以可以輕易的override Adaptee。

2.代碼較精簡。

缺點:

1.只能轉換單一Adaptee。

因為使用繼承技術,所以Class Adapter的內容會綁死在特定的Adaptee的concreate class或derived class身上,因此Class Adapter無法同時轉換多個Adaptee。(若配合泛型技術,可以解掉此問題,請參閱(原創) 我的Design Pattern之旅[7]:使用泛型改進Adapter Pattern (OO) (Design Pattern) (C/C++) (template) (C++/CLI)。

2.無法動態改變欲轉換的Adaptee。

因為使用繼承技術,在compile-time已經決定了要繼承的Adaptee,所以無法動態改變Adaptee。

Object Adapter

優點:

1.可轉換多個Adaptee。

因為使用了組合技術,配合polymorphism(多型/多態),所以能轉換class和其derived class。

2.可動態改變欲轉換的Adaptee。

因為使用了組合技術,可以在run-time的改變欲轉換的Adaptee。

缺點:

1.較難override Adaptee原本的行為。

若需override Adaptee原本的行為,必須先繼承Adaptee之後,override之,然後Adapter再組合Adaptee的driverd class。

2.代碼較多。

Class Adapter和Object Adapter優缺點剛好互補,可依實際需求決定之,大體上而言,Object Adapter優於Class Adapter,因為彈性較大,且可面對將來未知的class,也應證了那句『多用組合,少用繼承』的Design Pattern三句真言。

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