23種設計模式之介面卡模式

2021-10-22 18:47:27 字數 4023 閱讀 2573

二、實現方式

三、總結

下文如有錯漏之處,敬請指正

介面卡模式是將乙個類介面轉換為客戶端期望的另乙個介面,使得原本因介面不相容的類能協同工作。即讓不相關的兩個類產生關聯並進行工作。

介面卡模式的主要角色:

缺點

物件介面卡模式

adapter類聚合adaptee物件並實現target介面

優點

缺點

預設介面卡模式

抽象類adapter實現adaptee介面,通過匿名內部類的方式覆寫adapter中需要的方法,即target。

實現邏輯:

adapter繼承adaptee類並實現target介面,完成adaptee—>target的適配。

需求:電器a電壓是110v,電器b電壓是5v,而國內的標準電壓是220v,因此需要買乙個變壓器,將220v轉為110v,將220v轉為5v,電器才能正常工作。

其中 target是110v和5v ,adaptee是220v, adapter是變壓器,使用介面卡將adaptee—>target進行適配。

target:

package adapter.classadapter;

public

inte***ce

target

adaptee:

package adapter.classadapter;

public

class

adaptee

}

adapter:

adapter110v

package adapter.classadapter;

public

class

adapter110v

extends

adaptee

implements

target

}

adapter5v

package adapter.classadapter;

public

class

adapter5v

extends

adaptee

implements

target

}

package adapter.classadapter;

public

class

}

package adapter.classadapter;

public

class

}

client:

package adapter.classadapter;

public

class

client

}

當客戶端有乙個120v的電器,那麼此時只需要再增加乙個120v的介面卡,電器就可以正常工作了。

如果使用者現在到澳大利亞了,他們國家的標準電壓是240v,因為類介面卡是靜態繫結源角色,如果要將240v轉為使用者想要的電壓,就要把所有介面卡重新寫一遍。對此情況可以採用物件介面卡模式。

實現邏輯:

adapter聚合adaptee物件並實現target介面,完成adaptee—>target的適配。

需求:使用者的手機電壓是5v,在國內的標準電壓是220v,因此變壓器將220v轉為5v。當他到日本出差時,由於日本的標準電壓是110v,因此他需要將110v轉為5v的變壓器。

其中 target是5v ,adaptee是220v和110v, adapter是變壓器,使用介面卡將adaptee—>target進行適配。

target:

package adapter.objectadapter;

public

inte***ce

target

adaptee:

adaptee

package adapter.objectadapter;

public

abstract

class

adaptee

adaptee110v

package adapter.objectadapter;

public

class

adaptee110v

extends

adaptee

}

adaptee220v

package adapter.objectadapter;

public

class

adaptee220v

extends

adaptee

}

adapter:

adapter5v

package adapter.objectadapter;

public

class

adapter5v

implements

target

public

adapter5v

(adaptee adaptee)

@override

public

void

transferv()

}

package adapter.objectadapter;

public

class

}

client:

package adapter.objectadapter;

public

class

client

}

當電壓不同時,只要增加或更換相應的源角色類和介面卡即可。

實現邏輯:

源有介面有很多方法,而我們只需要其中一部分,可以用抽象類來實現該介面,並為該介面的方法提供乙個預設實現(空方法),抽象類的子類去實現自己需要的介面,符合介面隔離原則。

adaptee是源介面,抽象類是adapter,抽象子類是target。

需求:乙個工具介面定義了許多任務具方法,某類只想使用該工具的某兩個方法。

adaptee:

package adapter.defaultadapter;

public

inte***ce

adaptee

adapter:

package adapter.defaultadapter;

public

abstract

class

adapter

implements

adaptee

@override

public

void

func2()

@override

public

void

func3()

@override

public

void

func4()

}

client:

package adapter.defaultadapter;

public

class

client};

adapter.

func1();}}

介面卡模式是乙個補償模式,通常用來解決介面不相容的問題。它通過把非本系統介面的物件包裝成本系統可以接受的物件,從而簡化了系統大規模變更風險的存在。

23種設計模式 介面卡模式

1 概念 定義 介面卡模式,是指將乙個類的介面轉換成客戶期望的另外乙個介面,是原本的介面不相容的類,可以一起工作。它是結構型模式的一種。建立型模式 結構型模式 行為模式 單例模式 模式 模板方法模式 原型模式 介面卡模式 策略模式 工廠方法模式 橋接模式 命令模式 抽象工廠模式 裝飾模式 責任鏈模式...

23種設計模式之介面卡模式(Adapter)

介面卡模式將乙個介面轉換成客戶希望的另乙個介面,從而使介面不相容的那些類可以一起工作。介面卡模式既可以作為類結構型模式,也可以作為物件結構型模式。在類介面卡模式中,通過使用乙個具體類將適配者適配到目標介面中 在物件介面卡模式中,乙個介面卡可以將多個不同的適配者適配到同乙個目標。圓形類 public ...

了解23種設計模式之介面卡模式

一,什麼是 介面卡模式 adapter 模式 也叫介面卡模式,是構造型模式之一,通過adapter 模式可以改變已有類 或外部類 的介面形式 二,介面卡模式的定義與特點以及結構 定義 將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。介面卡模式分為 ...