python 設計模式 介面卡模式

2021-09-11 23:43:23 字數 1759 閱讀 4345

介面卡模式(adapter pattern):是一種結構型設計模式,幫助我們實現兩個不相容的介面之前的相容;樣例:電子商務系統支援不同國家的貨幣交易,需要乙個介面卡,將其餘的貨幣轉化成一種貨幣最終進行交易。

設計模式一直遵從開放/封閉的原則(open/close principle),開放封閉原則是物件導向設計的的基本原則之一,宣告乙個軟體實體應該對擴充套件是開放的,對修改則是封閉的。

對於一些老舊**進行重構這個有點不現實,對於一些廠商提供統一的介面,這個想修改原廠商的**進行適配,這個更不切實際,所以介面卡模式應運而生。

class synthesizer:

def __init__(self, name):

self.name = name

def __str__(self):

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

def play(self):

return 'is playing an electronic song'

def get(self):

""" 多餘新增的方法 """

class human:

def __init__(self, name):

self.name = name

def __str__(self):

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

def speak(self):

return 'says hello'

def see(self):

""" 多餘新增的方法 """

return 'see a people'

class computer:

def __init__(self, name):

self.name = name

def __str__(self):

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

def execute(self):

return 'executes a program'

def view(self):

""" 多餘新增的方法 """

return 'view a program'

class adapter:

def __init__(self, obj, adapted_methods):

self.obj = obj

# 此處只適函式方法,其餘的本身屬性並沒有適配

self.__dict__.update(adapted_methods)

# 將剩餘的未適配的屬性一塊適配,不然列印name屬性就會報錯

def __str__(self):

return str(self.obj)

def main():

objects = [computer('asus')]

synth = synthesizer('mog')

human = human('bob')

for i in objects:

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

print('{}'.format(i.name))

print('{}'.format(i.view()))

if __name__ == '__main__':

main()

Python設計模式 介面卡模式

基於python3.5.2,如下 coding utf 8 class acpnstaff name id phone def init self,id self.id id defgetname self print a protocol getname method id s self.id r...

Python設計模式 介面卡模式

實現兩個或以上不相容介面之間的相容 某個產品已製造出來之後,需要應對新的需求,希望其仍然有效 不相容介面是他方的或者是老舊的,無法訪問其原始碼或者修改起來不切實際,並且違反開放 封閉原則。放開 封閉原則 物件導向設計的基本原則之一,宣告乙個軟體實體應該對擴充套件是開放的,對修改則是封閉的,意味著無需...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...