python理解介面卡模式

2021-10-03 06:52:04 字數 1241 閱讀 1249

介面卡模式:由於系統呼叫方式的原因,需要把不同類裡面的方法(名字不一樣),用同樣的方式來呼叫;

# -*- coding: utf-8 -*-

class

bird

:def

fly(self)

:print

('bird is flying ...'

)class

dog:

defbark

(self)

:print

('dog is barking ...'

)class

people

:def

speak

(self)

:print

('people is speaking ...'

)class

adapter

:def

__init__

(self, clz_name, method)

: self.clz_name = clz_name

self.__dict__.update(method)

def__getattr__

(self, item)

:'''複寫getattr使其在介面卡函式查無方法的時候,執行getattr魔法方法'''

return

getattr

(self.clz_name, item)

if __name__ ==

'__main__'

: dog = dog(

) bird = bird(

) people = people(

) objects =

dict

(test=dog.bark)))

dict

(test=dog.bark)))

dict

(test=dog.bark)))

forobject

in objects:

object

.test(

)# adapter(dog, dict(tes1t=dog.bark)).tes1t()

# adapter(bird, dict(tes2t=bird.fly)).tes2t()

# adapter(people, dict(tes3t=people.speak)).tes3t()

Python介面卡模式

存在一套舊系統,裡面包含human和synthesizer類,如下 class synthesizer def init self,name self.name name def str self return the synthesizer format self.name defplay sel...

python 介面卡模式

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

介面卡模式的理解

介面卡模式用於 系統的資料和行為都正確,但介面不符時,應該考慮用介面卡,目的是使控制範圍之外的乙個原有物件與某個介面匹配。介面卡模式主要應用於希望復用一些現存的類,但是介面又與復用環境要求不一致的情況,比如在需要對早期 復用一些功能等應用上很有實際價值。自己翻譯就是 已經有了乙個早期的抽象的介面或者...