介面卡模式:由於系統呼叫方式的原因,需要把不同類裡面的方法(名字不一樣),用同樣的方式來呼叫;
# -*- 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 ...
介面卡模式的理解
介面卡模式用於 系統的資料和行為都正確,但介面不符時,應該考慮用介面卡,目的是使控制範圍之外的乙個原有物件與某個介面匹配。介面卡模式主要應用於希望復用一些現存的類,但是介面又與復用環境要求不一致的情況,比如在需要對早期 復用一些功能等應用上很有實際價值。自己翻譯就是 已經有了乙個早期的抽象的介面或者...