Python:设计模式之命令模式

简介: Python:设计模式之命令模式

命令模式

命令模式属于行为型模式

行为型模式侧重于对象的响应性,利用对象之间的交互实现更强大的功能

其中对象用于封装在完成一项操作或在触发一个事件时所需的全部信息:

1、方法名称

2、拥有方法的对象

3、方法参数的值


命令模式术语

Command: 声明执行操作的接口

ConcreteCommand:将一个Receiver对象和一个操作绑定在一起

Receiver:创建ConcreteCommand对象并设定其接收者

Invoker:要求该ConcreteCommand执行这个请求

Client:知道如何实施与执行一个请求相关的操作


执行流程:

客户端请求执行命令,

调用者接受命令,封装它并将其放置到队列中,

ConcreteCommand类根据所请求的命令来知道接收者执行特定的动作


命令模式主要意图

1、将请求封装为对象

2、可用不同的请求对客户进行参数化

3、允许将请求保存在队列中

4、提供面向对象的回调


命令模式适用场景

1、根据需要执行的操作对对象进行参数化

2、将操作添加到队列并在不同地点执行请求

3、创建一个结构来根据较小操作完成高级操作


命令模式应用

1、重做或回滚操作

2、异步任务执行


命令模式的优点

1、将调用操作的类与知道如何执行该操作的对象解耦

2、提供队列系统后,可以创建一系列命令

3、添加新命令更容易,并且无需更改现有代码

4、可以使用命令模式定义回滚系统


命令模式的缺点

1、为了实现目标,需要大量的类和对象进行协作

2、每个单独的命令都是一个ConcreteCommand类,从而增加了需要实现和维护的类的数量


代码实例:

# -*- coding: utf-8 -*-
from abc import ABCMeta, abstractmethod
# 提供接口Command
class Order(metaclass=ABCMeta):
    @abstractmethod
    def execute(self):
        pass
# 具体命令 ConcreteCommand
class BuyStockOrder(Order):
    def __init__(self, stock):
        self.stock = stock
    def execute(self):
        self.stock.buy()
class SellStockOrder(Order):
    def __init__(self, stock):
        self.stock = stock
    def execute(self):
        self.stock.sell()
# Receiver对象
class StockTrade(object):
    def buy(self):
        print("buy stock")
    def sell(self):
        print("sell stock")
# 调用者Agent,中介
class Broker(object):
    def __init__(self):
        self.__order_list = []  # 订单队列
    def add_order(self, order):
        self.__order_list.append(order)
    def place_order(self):
        for order in self.__order_list:
            order.execute()
        self.__order_list.clear()
if __name__ == '__main__':
    # client
    stock = StockTrade()
    buy_stock = BuyStockOrder(stock)
    sell_stock = SellStockOrder(stock)
    # invoker
    broker = Broker()
    broker.add_order(buy_stock)
    broker.add_order(sell_stock)
    broker.place_order()
"""
buy stock
sell stock
"""

相关文章
|
5月前
|
设计模式 SQL 人工智能
Python设计模式:从代码复用到系统架构的实践指南
本文以Python为实现语言,深入解析23种经典设计模式的核心思想与实战技巧。通过真实项目案例,展示设计模式在软件开发中的结构化思维价值,涵盖创建型、结构型、行为型三大类别,并结合Python动态语言特性,探讨模式的最佳应用场景与实现方式,帮助开发者写出更清晰、易维护的高质量代码。
245 1
|
5月前
|
设计模式 人工智能 算法
Python设计模式:从代码复用到系统架构的实践指南
本文探讨了电商系统中因支付方式扩展导致代码臃肿的问题,引出设计模式作为解决方案。通过工厂模式、策略模式、单例模式等经典设计,实现代码解耦与系统扩展性提升。结合Python语言特性,展示了模块化、装饰器、适配器等模式的实战应用,并延伸至AI时代的设计创新,帮助开发者构建高内聚、低耦合、易维护的软件系统。
340 0
|
5月前
|
设计模式 人工智能 算法
python 设计模式
工厂模式是一种创建型设计模式,通过定义创建对象的接口,将实例化延迟到子类,实现对象创建与使用的分离。它包括简单工厂模式、工厂方法模式和抽象工厂模式,适用于不同复杂度的对象创建场景,提高系统灵活性和可扩展性。
118 4
|
7月前
|
设计模式 消息中间件 Java
【设计模式】【行为型模式】命令模式(Command)
一、入门 什么是命令模式? 命令模式是一种行为设计模式,它将请求或操作封装为对象,从而使你可以用不同的请求对客户进行参数化,并支持请求的排队、记录、撤销等操作。 命令模式的核心是将“请求”封装为独立的
239 15
|
10月前
|
设计模式 存储 算法
「全网最细 + 实战源码案例」设计模式——命令模式
命令模式(Command Pattern)是一种行为型设计模式,将请求封装成独立对象,从而解耦请求方与接收方。其核心结构包括:Command(命令接口)、ConcreteCommand(具体命令)、Receiver(接收者)和Invoker(调用者)。通过这种方式,命令的执行、撤销、排队等操作更易扩展和灵活。 适用场景: 1. 参数化对象以操作。 2. 操作放入队列或远程执行。 3. 实现回滚功能。 4. 解耦调用者与接收者。 优点: - 遵循单一职责和开闭原则。 - 支持命令组合和延迟执行。 - 可实现撤销、恢复功能。 缺点: - 增加复杂性和类数量。
346 14
「全网最细 + 实战源码案例」设计模式——命令模式
|
9月前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践感悟####
本文作为一篇技术性文章,旨在深入探讨Python编程中设计模式的应用价值与实践心得。在快速迭代的软件开发领域,设计模式如同导航灯塔,指引开发者构建高效、可维护的软件架构。本文将通过具体案例,展现设计模式如何在实际项目中解决复杂问题,提升代码质量,并分享个人在实践过程中的体会与感悟。 ####
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
设计模式 监控 算法
Python编程中的设计模式应用与实践感悟###
在Python这片广阔的编程疆域中,设计模式如同导航的灯塔,指引着开发者穿越复杂性的迷雾,构建出既高效又易于维护的代码结构。本文基于个人实践经验,深入探讨了几种核心设计模式在Python项目中的应用策略与实现细节,旨在为读者揭示这些模式背后的思想如何转化为提升软件质量的实际力量。通过具体案例分析,展现了设计模式在解决实际问题中的独特魅力,鼓励开发者在日常编码中积极采纳并灵活运用这些宝贵的经验总结。 ###

热门文章

最新文章

推荐镜像

更多