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

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

編輯:關於C語言

Abstract

在OO設計裡,我們常會定下interface要求其他class必須實現此interface,以便彼此溝通,若是新開發的專案,問題就不大;若既有的framework/library中,已經有符合需求的class,但唯一可惜的是,『因為interface並不相同』,導致無法和我的class合作,此時可使用Adpater Pattern解決。

Intent

將class的interface轉換成外界所預期的另一種interface,讓原先囿於interface不相容問題而無法協力合作的class能夠兜再一起用[1]。

Introduction

adapter中文為轉換器、轉接器,主要的目的就是將不相容的interface做轉換。現實生活中,處處可以看到adapter,如Notebook內部使用的是DC(直流電),但插頭提供的是AC(交流電),所以必須使用AC to DC adapter將交流電轉換成直流電,Notebook才能使用;又如現在很多Notebook並沒有COM port,取而代之的是USB port,但很多嵌入式系統開發版必須使用COM port才能與PC連接,因此就有USB to COM的adapter,讓Notebook可以和開發版做連接。OO設計也是如此,若interface不相容,則可透過Adapter Pattern解決。

Structure[1]

Class Adapter (使用繼承技術)

Object Adapter (使用組合技術)

Participants[1]

ClIEnt

與符合ITarget interface的object合作。

ITarget

定義ClIEnt所用的與應用領域相關之interface。

Adaptee

需要被轉換的既有interface。

Adapter

將Adaptee轉換成ITarget interface。

Collaborations

ClIEnt呼叫Adapter的method,Adapter再去呼叫Adaptee的method完成任務[1]。

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