Python介面卡模式

2021-08-01 23:46:02 字數 1831 閱讀 2247

存在一套舊系統,裡面包含humansynthesizer類,如下:

class

synthesizer:

def__init__

(self, name):

self.name = name

def__str__

(self):

return

'the {} synthesizer'.format(self.name)

defplay

(self):

return

'is playing an electronic song'

class

human:

def__init__

(self, name):

self.name = name

def__str__

(self):

return

'{} the human'.format(self.name)

defspeak

(self):

return

'says hello'

現在新增computer類如下:

class

computer:

def__init__

(self, name):

self.name = name

def__str__

(self):

return

'the {} computer'.format(self.name)

defexecute

(self):

return

'executes a program'

有乙個問題:客戶端僅知道如何呼叫execute()方法,並不知道synthesizer.play()human.speak()。必須像呼叫computer.execute()一樣使用synthesizer.execute()human.execute()來呼叫原系統中物件的執行函式。

介面卡是救星!我們可以建立乙個adapter類專門用於統一介面。__init__()方法的obj引數是我們想要適配的物件,adapted_methods是乙個字典,鍵值對中的鍵是客戶端要呼叫的方法,值是應該被呼叫的方法。

class

adapter:

def__init__

(self, obj, adapted_methods):

self.obj = obj

self.__dict__.update(adapted_methods)

def__str__

(self):

return str(self.obj)

接下來,只需要在呼叫時,對原有系統的類進行封裝,即可實現統一使用execute()方法執行動作了。**如下:

def

main

(): objects = [computer('asus')]

synth = synthesizer('moog')

human = human('bob')

for i in objects:

print('{} {}'.format(str(i), i.execute()))

python 介面卡模式

所謂介面卡模式是指是一種介面適配技術,它可通過某個類來使用另乙個介面與之不相容的類,運用此模式,兩個類的介面都無需改動。存在一套舊系統,裡面包含 human 和 synthesizer 類,如下 class synthesizer def init self,name self.name name ...

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...