設計模式,外觀模式(6)
阿新 • • 發佈:2018-03-08
__name__ 基類 body 訪問 get self 簡化 self. getattr
外觀模式(Facade Pattern)隱藏系統的復雜性,並向客戶端提供了一個客戶端可以訪問系統的接口。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個接口,來隱藏系統的復雜性。
這種模式涉及到一個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委托調用。
class A(): def run(self): print ‘A run‘ def jump(self): print ‘A jump‘ class B(): def run(self): print ‘B run‘ def jump(self): print ‘B jump‘ class C(): def run(self): print ‘C run‘ def jump(self): print ‘C jump‘ class Facade(): def __init__(self): self.a=A() self.b=B() self.c=C() def run(self): for item in (‘a‘,‘b‘,‘c‘): getattr(self,item).run() def jump(self): for item in (‘a‘,‘b‘,‘c‘): getattr(self,item).jump() if __name__==‘__main__‘: facade=Facade() facade.run() facade.jump()
A B C的關系是他們看起來是鴨子類型,不管他們3個有沒有共同的抽象基類,但他們的都有相同的公用方法名。
設計模式,外觀模式(6)