今天介紹三種結構型設計模式:適配器模式、裝飾器模式、代理模式。
適配器模式,用于將一個類的接口轉換為另一個接口,以滿足客戶端的需求。在Python中,適配器模式可以通過繼承或組合來實現。
以下是一個使用繼承實現適配器模式的示例:
class Target: def request(self): passclass Adaptee: def specific_request(self): passclass Adapter(Target, Adaptee): def request(self): self.specific_request()
在上面的示例中,Target是目標接口,Adaptee是需要適配的類,Adapter是適配器類,它繼承了Target和Adaptee,并實現了request方法,將specific_request方法轉換為request方法。
裝飾器模式,用于動態地給一個對象添加額外的功能,而不需要修改原始類的代碼。在Python中,裝飾器模式可以通過函數和類來實現。
以下是一個使用函數實現裝飾器模式的示例:
def decorator(func): def wrapper(*args, **kwargs): # 在函數調用前添加額外的功能 result = func(*args, **kwargs) # 在函數調用后添加額外的功能 return result return wrapper@decoratordef target(): pass
在上面的示例中,decorator是裝飾器函數,它接受一個函數作為參數,并返回一個新的函數wrapper,wrapper函數在調用原始函數之前和之后添加了額外的功能。@decorator語法是Python中的語法糖,它等同于target = decorator(target)。
代理模式,用于控制對另一個對象的訪問。在Python中,代理模式可以通過繼承或組合來實現。
以下是一個使用組合實現代理模式的示例:
class Subject: def request(self): passclass RealSubject(Subject): def request(self): passclass Proxy(Subject): def __init__(self): self.real_subject = RealSubject() def request(self): # 在調用真實主題之前或之后添加額外的功能 self.real_subject.request()
在上面的示例中,Subject是主題接口,RealSubject是真實主題類,Proxy是代理類,它包含一個真實主題對象,并實現了request方法,可以在調用真實主題之前或之后添加額外的功能。
本文鏈接:http://www.tebozhan.com/showinfo-26-82748-0.htmlPython實現適配器模式、裝飾器模式、代理模式
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 每個程序員都應該了解的硬件知識