Python实现适配器模式、装饰器模式、代理模式

开发 前端
本文将介绍三种结构型设计模式:适配器模式、装饰器模式、代理模式,下面,我们一起来看。

今天介绍三种结构型设计模式:适配器模式、装饰器模式、代理模式。

适配器模式

适配器模式,用于将一个类的接口转换为另一个接口,以满足客户端的需求。在Python中,适配器模式可以通过继承或组合来实现。

以下是一个使用继承实现适配器模式的示例:

class Target:
    def request(self):
        pass

class Adaptee:
    def specific_request(self):
        pass

class 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

@decorator
def target():
    pass

在上面的示例中,decorator是装饰器函数,它接受一个函数作为参数,并返回一个新的函数wrapper,wrapper函数在调用原始函数之前和之后添加了额外的功能。@decorator语法是Python中的语法糖,它等同于target = decorator(target)。

代理模式

代理模式,用于控制对另一个对象的访问。在Python中,代理模式可以通过继承或组合来实现。

以下是一个使用组合实现代理模式的示例:

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):
        # 在调用真实主题之前或之后添加额外的功能
        self.real_subject.request()

在上面的示例中,Subject是主题接口,RealSubject是真实主题类,Proxy是代理类,它包含一个真实主题对象,并实现了request方法,可以在调用真实主题之前或之后添加额外的功能。

责任编辑:赵宁宁 来源: Python技术
相关推荐

2020-10-25 08:56:21

适配器模式

2012-05-16 17:22:11

Java设计模式

2021-02-18 08:39:28

设计模式场景

2013-11-26 16:39:21

Android设计模式

2022-02-13 23:33:24

设计模式Java

2022-02-18 17:21:29

适配器模式客户端

2024-07-31 10:41:16

C#设计模式

2012-08-02 10:46:34

JavaAdapter模式

2024-02-22 12:13:49

适配器模式代码

2012-04-12 09:33:02

JavaScript

2009-11-18 18:08:20

PHP适配器模式

2013-02-26 10:55:47

C#适配器设计模式

2021-02-16 08:16:09

适配器模式MybatisJava

2022-12-12 09:20:59

适配器模式接口

2021-08-16 17:15:19

设计模式Android适配器模式

2023-12-13 13:28:16

装饰器模式Python设计模式

2014-07-17 10:55:10

Win8.1应用开发适配器模式

2023-08-15 11:07:37

适配器模式TypeScript

2022-05-29 22:55:00

适配器设计模式

2023-09-04 13:14:00

装饰器设计模式
点赞
收藏

51CTO技术栈公众号