Python設計模式 介面卡模式

2021-10-02 01:29:32 字數 1936 閱讀 3710

實現兩個或以上不相容介面之間的相容

某個產品已製造出來之後,需要應對新的需求,希望其仍然有效

不相容介面是他方的或者是老舊的,無法訪問其原始碼或者修改起來不切實際,並且違反開放/封閉原則。

放開/封閉原則:物件導向設計的基本原則之一,宣告乙個軟體實體應該對擴充套件是開放的,對修改則是封閉的,意味著無需修改乙個軟體實體的源**就能擴充套件其行為。

在不同國家旅行,要為手機電腦充電,需要乙個插頭介面卡,可以在不同國家使用

class

sql:

def__init__

(self,name)

: self.name = name

def__str__

(self)

:return

'the {} sql'

.format

(self.name)

defquery

(self)

:return

'query data : 123456789'

class

serial

:def

__init__

(self,name)

: self.name = name

def__str__

(self)

:return

'the {} serial'

.format

(self.name)

defread

(self)

:return

'read buff : abcdefghijklmn'

class

internet

:def

__init__

(self,name)

: self.name = name

def__str__

(self)

:return

'the {} ip address'

.format

(self.name)

defpost

(self)

:return

'post value : user = admin password = 888888'

class

adapter

:def

__init__

(self,obj,adapted_methods)

: self.obj = obj

#將特殊方法新增進介面卡中

self.__dict__.update(adapted_methods)

def__str__

(self)

:return

str(self.obj)

defmain()

: communication =

sql = sql(

'mysql'

)#由於使用者只知道乙個getdata方法,所以將各種不同方法適配到介面卡中

dict

(getdata = sql.query)))

serial = serial(

'rs485'

)dict

(getdata = serial.read)))

internet = internet(

'websocket'

)dict

(getdata = internet.post)))

#模擬使用者只呼叫getdata方法

for i in communication:

print

('{} {}'

.format

(i,i.getdata())

)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 設計模式 介面卡模式

介面卡模式 adapter pattern 是一種結構型設計模式,幫助我們實現兩個不相容的介面之前的相容 樣例 電子商務系統支援不同國家的貨幣交易,需要乙個介面卡,將其餘的貨幣轉化成一種貨幣最終進行交易。設計模式一直遵從開放 封閉的原則 open close principle 開放封閉原則是物件導...

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

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