介面卡模式(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...