当前位置: 首页 > news >正文

网页网站模板互联网技术论坛

网页网站模板,互联网技术论坛,提升学历图片,大连建设学院网站行为型模式-命令模式命令模式(Command)解决命令执行问题描述适用环境优点:缺点:违反原则:代码实现命令模式(Command) 解决命令执行问题 描述 将一个请求封装为一个对象,并定义该对…

行为型模式-命令模式

    • 命令模式(Command)
    • 解决命令执行问题
      • 描述
      • 适用环境
      • 优点:
      • 缺点:
      • 违反原则:
      • 代码实现

命令模式(Command)

解决命令执行问题

描述

将一个请求封装为一个对象,并定义该对象的执行方法,从而使得请求能够被延迟、队列化、记录和撤销。这种方式可以提高代码的重用性和可维护性,同时也能够支持事务性操作。

适用环境

当需要将请求封装成对象时使用;当需要支持撤销操作时使用。

优点:

可以将请求的发送者和接收者解耦,提高系统的灵活性;可以很容易地扩展新的命令。

缺点:

对于过多的命令,会导致系统代码变得复杂;命令模式可能会导致系统的性能下降。

违反原则:

开放-封闭原则:如果需要增加新的命令,则需要修改所有的命令类,违反该原则。

代码实现

书店订单系统当客户提交订单时需要将订单信息保存下来。
现在使用传统的方式来处理订单:

class Book:def __init__(self, name, price):self.name = nameself.price = priceclass Order:def __init__(self):self.order_items = []def add_item(self, item):self.order_items.append(item)def place_order(self):total_price = sum([item.price for item in self.order_items])print(f"订单总金额为{total_price}元")book1 = Book('Python编程从入门到实践', 68.0)
book2 = Book('流畅的Python', 79.0)
order = Order()
order.add_item(book1)
order.add_item(book2)
order.place_order()

以上代码存在以下问题:

  1. 对订单进行其他操作时需要修改原有的代码。不同的操作编写不同的方法导致代码冗余。
    可以通过命令模式来解决这个问题,具体实现如下:
# 创建一个抽象类Command,定义一个抽象方法execute()
# 具体子类需要实现该方法,并通过调用Receiver的相关方法来执行具体操作
from abc import ABC, abstractmethodclass Command(ABC):@abstractmethoddef execute(self):pass# 创建一个具体的Command类,用于保存Order信息class OrderCommand(Command):def __init__(self, order):self.order = orderdef execute(self):total_price = sum([item.price for item in self.order.order_items])print(f"订单总金额为{total_price}元")# 创建一个Receiver类,用于实现具体操作class Order:def __init__(self):self.order_items = []def add_item(self, item):self.order_items.append(item)def remove_item(self, item):self.order_items.remove(item)def place_order(self):order_command = OrderCommand(self)order_command.execute()book1 = Book('Python编程从入门到实践', 68.0)
book2 = Book('流畅的Python', 79.0)
order = Order()
order.add_item(book1)
order.add_item(book2)
order.place_order()
http://www.yayakq.cn/news/995022/

相关文章:

  • 云服务器网站解析wordpress 图片超链接
  • 中国建设银行河南省分行网站罗湖附近公司做网站建设多少钱
  • 景德镇做网站的公司免费网页制作代码
  • 做外贸的在哪些网站找工作给公司做网站
  • 学校网站建设培训心得体会网站建设有关书籍
  • phpcms v9农业网站模板html5网站开发实例教程
  • pexels素材网站深圳市工程造价信息网
  • 如何建立英文网站书籍网站建设规划书
  • 站长做2个网站查看网站外链
  • 免费推广网站入口2023找工作哪个网站好招聘信息
  • 文本文档做网站网站建设教程网
  • 网站怎么建立会员长沙网站建设网
  • wordpress4.6.9福州seo计费
  • 企业网站的基本类型包括网上注册公司流程教程
  • 网站建设 台州电商网页的特点
  • 个人网站欣赏网站开发常用模板
  • 在什么网站可以接设计做小程序制作单位
  • 国内做焊接机器人平台网站河北互联思维网站建设
  • 这是我自己做的网站机械网站建设案例
  • 网站seo优化网站网站开发的技术问题
  • 可以做旅行行程的网站网站加载很慢怎么办
  • 网站备案材料做外账要登什么网站
  • asp.net门户网站项目怎么做小型电商网站开发
  • 运输公司网站模板河南省建设厅职称网站
  • 现在主流网站用什么做的网页建站
  • 精美网页源码网站注册建筑公司
  • 手机与电脑网站制作建设工程合同司法解释一
  • 免费建靓号网站株洲企业网站建设品牌
  • 单页网站内链接优化公司治理
  • 英文企业网站源码 asp汽车网站cms