1. 程式人生 > >設計模式總結之Adapter Pattern(介面卡模式)

設計模式總結之Adapter Pattern(介面卡模式)

目錄

建立型設計模式: 結構型設計模式: 行為型設計模式:

Adapter Pattern(介面卡模式)

意圖

將一個類的介面轉換成另外一個客戶希望的介面。Adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

注:介面卡模式在詳細設計階段不需要考慮它,它是為了對現有系統或產品介面相容時,也就是既成事實的情況下的補救措施。

適用性

* 你想使用一個已經存在的類,而它的介面不符合你的需求。
* 你想建立一個可以複用的類,該類可以與其他不相關的類或不可預見的類(即那些介面可能不一定相容的類)協同工作。
* (僅適用於物件Adapter)你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的介面。物件介面卡可以適配它的父類介面。

結構

1、類介面卡


2、物件介面卡




參與者
Target (目標角色,要用的介面) 
— 定義Client使用的與特定領域相關的介面。 
Client (使用場景) 
— 與符合Target介面的物件協同。 
Adaptee (被適配者) 
— 定義一個已經存在的介面,這個介面需要適配。 
Adapter (介面卡,把Adaptee介面轉換為Target可用的介面)
— 對Adaptee的介面與Target介面進行適配 


例子

1、 類介面卡





2、 物件介面卡





優缺點

> 優點:
1. 介面卡模式可以讓兩個沒有任何關係的類在一起執行,只要介面卡這個角色能夠搞定他們就成。   
2. 增加了類的透明性
想想看,我們訪問的Target目標角色,但是具體的實現都委託給了源角色,而這些對高層次模組是透明的,也是它不需要關心的。   
3. 提高了類的複用度當然了,源角色在原有的系統中還是可以正常使用,而在目標角色中也可以充當新的演員。
4. 靈活性非常好
某一天,突然不想要介面卡,沒問題,刪除掉這個介面卡就可以了,其他的程式碼都不用修改,基本上就類似一個靈活的構件,想用就用,不想就解除安裝。

相關推薦

設計模式總結Adapter Pattern介面卡模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Adapter Pattern(介面卡模式) 意圖 將一個類的介面轉換成另外一個客戶希望的介面。Adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。 注:介面卡模式在詳細設計階段不需

設計模式總結Proxy Pattern代理模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Proxy Pattern(代理模式) 意圖 為其他物件提供一種代理以控制對這個物件的訪問。適用性 在需要用比較通用和複雜的物件指標代替簡單的指標的時候,使用Proxy模式。下面是一些可以使用Proxy模式常

設計模式總結Visitor Pattern訪問者模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Visitor Pattern(訪問者模式) 意圖 表示一個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適用性 * 一個物件結構包含很多類物件,它們有不同的

設計模式總結Facade Pattern外觀模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Facade Pattern(外觀模式) 意圖 為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。適用性 * 當你要為一個複雜子系統提供一個簡單介

設計模式總結Prototype Pattern原型模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Prototype Pattern(原型模式) 意圖 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。適用性 •當要例項化的類是在執行時刻指定時,例如,通過動態裝載; •為了避免建立一個與產

設計模式總結TemplateMethod Pattern模版方法模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: TemplateMethod Pattern(模版方法模式) 意圖 定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Template Method使得子類可以不改變一個演算法的結構即可重定義該演算法的

設計模式總結Iterator Pattern迭代器模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Iterator Pattern(迭代器模式) 意圖 提供一種方法順序訪問一個聚合物件中各個元素, 而又不需暴露該物件的內部表示。適用性 1. 訪問一個聚合物件的內容而無需暴露它的內部表示。 2. 支援對聚合

設計模式總結Builder Pattern建造者模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Builder Pattern(建造者模式) 意圖 將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。適用性 * 當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時。

設計模式總結Flyweight Pattern享元模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Flyweight Pattern(享元模式) 意圖 運用共享技術有效地支援大量細粒度的物件。適用性 當以下所有的條件都滿足時,可以考慮使用享元模式: * 一個應用程式使用了大量的物件。 * 完全由於使用大量

設計模式總結Bridge Pattern橋接模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Bridge Pattern(橋接模式) 意圖 將抽象部分與它的實現部分分離,使它們都可以獨立地變化。 【GOF95】在提出橋樑模式的時候指出,橋樑模式的用意是"將抽象化(Abstraction)與實現化(I

java設計模式Composite Pattern組合模式

In ima field 編程 這也 composite 當前 屬性 OS 組合模式是面向可維護性編程的一種常見的設計模式。簡單的說就是一個類裏面有一組當前類組成的collection作為這個類的屬性。這和遞歸有一定的相似。他的目的就是在同類型對象之間建立起樹形層次結構,一

【java設計模式 模板方法Template Method模式

1. 模板方法的一個例項         這一節主要來學習一下設計模式中的模板方法模式。我們先來看一個例子:假如現在老闆讓你做一個汽車的模型,要求只要完成基本功能即可,不考慮擴充套件性,那你會怎麼做呢?我們首先會根據經驗設計一個類圖:        由這個類圖可知,非

設計模式模板方法Template Method

模板方法的定義為:再一個操作中定義一個演算法的骨架,將演算法中的一些步驟延遲到子類去實現。模板方法允許子類在不該變演算法結構的情況下重新定義演算法的某些步驟。 Define the skeleton of an algorithm in an operation, defe

node總結工具模組Domain 模組

Node.js Domain(域) 簡化非同步程式碼的異常處理,可以捕捉處理try catch無法捕捉的異常,來看下引入 Domain 模組的語法格式: var domain = require("domain") domain模組,把處理多個不同的IO的操作作為一個組。註冊事件和回撥到

node總結工具模組Net 模組

Node.js Net 模組提供了一些用於底層的網路通訊的小工具,包含了建立伺服器/客戶端的方法,來看下引入該模組的語法格式: var net = require("net") 來看下net模組中的方法: 序號 方法 & 描述

node總結工具模組Path 模組

Node.js path 模組提供了一些用於處理檔案路徑的小工具,來看下引入該模組的語法格式: var path = require("path") 來看下方法: 序號 方法 & 描述 1 path.nor

node總結工具模組OS 模組

Node.js os 模組提供了一些基本的系統操作函式,來看下引入該模組的語法格式: var os = require("os") 來看下其中包含的方法: 序號 方法 & 描述 1 os.tmpdir()

node總結工具模組DNS 模組

Node.js DNS 模組用於解析域名,來看下引入 DNS 模組的語法格式: var dns = require("dns") 來看下dns模組中包含的方法: 序號 方法 & 描述 1 dns.looku

設計模式總結Factory Method Pattern工廠方法模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Simple Factory Pattern(簡單工廠模式) GoF中認為簡單工廠模式是工廠方法的一個特例。 結構  例子  優缺點 優點: 優點: 簡單,結合單例模式更加方便和節省資源。 缺點: 增加新的

設計模式總結Abstruct Factory Pattern抽象工廠模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Abstruct Factory Pattern(抽象工廠模式) 意圖 提供一個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。 適用性 •一個系統要獨立於它的產品的建立、組合和表示時。 •一