装饰器模式、策略模式和回调模式。

简介: 【6月更文挑战第29天】

下面我将提供三种设计模式的Python实现示例:装饰器模式、策略模式和回调模式。

1. 装饰器模式

装饰器模式允许我们向一个对象添加新的功能,同时不改变其结构。在Python中,装饰器通常是一个函数,它接受一个函数作为参数并返回一个新的函数。

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()  # 输出: Something is happening before... Hello! ...after the function is called.

2. 策略模式

策略模式定义了一系列算法,并将每一个算法封装起来,使它们可以互换。策略模式让算法独立于使用它的客户端。

from abc import ABC, abstractmethod

class Strategy(ABC):
    @abstractmethod
    def execute(self):
        pass

class ConcreteStrategyA(Strategy):
    def execute(self):
        return "Executed strategy A"

class ConcreteStrategyB(Strategy):
    def execute(self):
        return "Executed strategy B"

class Context:
    def __init__(self, strategy: Strategy):
        self.strategy = strategy

    def set_strategy(self, strategy: Strategy):
        self.strategy = strategy

    def do_operation(self):
        return self.strategy.execute()

# 使用策略模式
context = Context(ConcreteStrategyA())
print(context.do_operation())  # 输出: Executed strategy A

context.set_strategy(ConcreteStrategyB())
print(context.do_operation())  # 输出: Executed strategy B

3. 回调函数

回调模式允许一个函数作为参数传递给另一个函数,然后在某个点被调用。这在事件处理、异步编程等领域非常常见。

def callback_function(data):
    print(f"Callback received data: {data}")

def function_with_callback(data, callback):
    print("Function is processing data.")
    # 模拟数据处理
    processed_data = data + " and processed it."
    callback(processed_data)

function_with_callback("Function received", callback_function)
# 输出: Function is processing data. Callback received data: Function received and processed it.

在上述示例中,callback_function 是一个回调函数,它被作为参数传递给 function_with_callback 函数,并在数据处理完成后被调用。

目录
相关文章
|
2月前
|
设计模式 算法
状态模式和策略模式有什么区别
状态模式和策略模式有什么区别
24 1
|
2月前
|
设计模式 算法 Java
工厂模式、模板模式和策略模式的混合使用
工厂模式又叫做工厂方法模式,是一种**创建型**设计模式,一般是在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
57 0
工厂模式、模板模式和策略模式的混合使用
|
10月前
|
设计模式 uml 微服务
个人理解简单工厂模式和策略模式的区别
个人理解简单工厂模式和策略模式的区别
74 1
|
2月前
|
设计模式 算法
模板模式
​ 如有错误或有补充,以及任何改进的意见,请留下您的高见 定义 模板模式是一种行为型设计模式,它在一个抽象类中公开定义了执行它的方法的方式/模板。子类可以按需重写方法实现,但调用将以抽象类中定义的方式进行。这种模式的核心思想是将一个算法的骨架定义在一个抽象类中,而将一些步骤延迟到子类中实现。 实现模板模式的步骤包括: 抽象出一个模板类,该类定义了执行算法的骨架。 抽象类中定义算法的骨架,骨架中的具体算法由子类实现。 子类按需重写方法实现,但调用将以抽象类中定义的方式进行。 使用final修饰模板方法,防止别人重写模板方法。 优点 提高了代码的可维护性和复用性。 减少了代码冗余,使算法的修
15 0
|
9月前
|
设计模式 算法
使用工厂模式、策略模式、门面模式、单例模式、责任链模式、装饰者模式和访问者模式来实现红包雨(一)
使用工厂模式、策略模式、门面模式、单例模式、责任链模式、装饰者模式和访问者模式来实现红包雨
|
9月前
|
算法
使用工厂模式、策略模式、门面模式、单例模式、责任链模式、装饰者模式和访问者模式来实现红包雨(二)
使用工厂模式、策略模式、门面模式、单例模式、责任链模式、装饰者模式和访问者模式来实现红包雨
|
2月前
|
设计模式 算法 自动驾驶
常见的设计模式(模板与方法,观察者模式,策略模式)
随着时间的推移,软件代码越来越庞大,随着而来的就是如何维护日趋庞大的软件系统。在面向对象开发出现之前,使用的是面向过程开发来设计大型的软件程序,面向过程开发将软件分成一个个单独的模块,模块之间使用函数进行组合,最后完成系统的开发,每次需要修改软件,如果不涉及好各个模块的关系,就会导致软件系统难以维护,从而导致软件变得不可使用。面向对象方法用对象模拟问题域中的实体,以对象间的联系刻画实体间联系
84 2
|
2月前
行为型 模板模式
行为型 模板模式
19 0
|
设计模式 算法 Java
详解模板模式
1.概述 模板模式是一种常用的设计模式,它定义了一个操作中的算法的骨架,将某些步骤延迟到子类中实现。模板模式使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。 模板模式中有两个角色:
118 0
|
设计模式 程序员
嘿!策略模式和工厂模式的区别你知道吗?
嘿!策略模式和工厂模式的区别你知道吗?