Python實(shí)現(xiàn)適配器模式、裝飾器模式、代理模式
今天介紹三種結(jié)構(gòu)型設(shè)計(jì)模式:適配器模式、裝飾器模式、代理模式。

適配器模式
適配器模式,用于將一個(gè)類(lèi)的接口轉(zhuǎn)換為另一個(gè)接口,以滿(mǎn)足客戶(hù)端的需求。在Python中,適配器模式可以通過(guò)繼承或組合來(lái)實(shí)現(xiàn)。
以下是一個(gè)使用繼承實(shí)現(xiàn)適配器模式的示例:
class Target:
def request(self):
pass
class Adaptee:
def specific_request(self):
pass
class Adapter(Target, Adaptee):
def request(self):
self.specific_request()在上面的示例中,Target是目標(biāo)接口,Adaptee是需要適配的類(lèi),Adapter是適配器類(lèi),它繼承了Target和Adaptee,并實(shí)現(xiàn)了request方法,將specific_request方法轉(zhuǎn)換為request方法。
裝飾器模式
裝飾器模式,用于動(dòng)態(tài)地給一個(gè)對(duì)象添加額外的功能,而不需要修改原始類(lèi)的代碼。在Python中,裝飾器模式可以通過(guò)函數(shù)和類(lèi)來(lái)實(shí)現(xiàn)。
以下是一個(gè)使用函數(shù)實(shí)現(xiàn)裝飾器模式的示例:
def decorator(func):
def wrapper(*args, **kwargs):
# 在函數(shù)調(diào)用前添加額外的功能
result = func(*args, **kwargs)
# 在函數(shù)調(diào)用后添加額外的功能
return result
return wrapper
@decorator
def target():
pass在上面的示例中,decorator是裝飾器函數(shù),它接受一個(gè)函數(shù)作為參數(shù),并返回一個(gè)新的函數(shù)wrapper,wrapper函數(shù)在調(diào)用原始函數(shù)之前和之后添加了額外的功能。@decorator語(yǔ)法是Python中的語(yǔ)法糖,它等同于target = decorator(target)。
代理模式
代理模式,用于控制對(duì)另一個(gè)對(duì)象的訪問(wèn)。在Python中,代理模式可以通過(guò)繼承或組合來(lái)實(shí)現(xiàn)。
以下是一個(gè)使用組合實(shí)現(xiàn)代理模式的示例:
class Subject:
def request(self):
pass
class RealSubject(Subject):
def request(self):
pass
class Proxy(Subject):
def __init__(self):
self.real_subject = RealSubject()
def request(self):
# 在調(diào)用真實(shí)主題之前或之后添加額外的功能
self.real_subject.request()在上面的示例中,Subject是主題接口,RealSubject是真實(shí)主題類(lèi),Proxy是代理類(lèi),它包含一個(gè)真實(shí)主題對(duì)象,并實(shí)現(xiàn)了request方法,可以在調(diào)用真實(shí)主題之前或之后添加額外的功能。





























