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

厦门企业建站系统模板杭州网站建设哪家强

厦门企业建站系统模板,杭州网站建设哪家强,成都青白江网站建设,家居网站建设基本流程说明 命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,以便在不同的请求者和接收者之间进行解耦、参数化和操作的队列化。命令模式允许你将具体的请求封装为对象,这些对象之间彼此独立&#xff…

说明

命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,以便在不同的请求者和接收者之间进行解耦、参数化和操作的队列化。命令模式允许你将具体的请求封装为对象,这些对象之间彼此独立,并且可以用不同的请求对客户端进行参数化。

结构
  • 命令接口(Command):声明执行命令的方法。
  • 具体命令类(Concrete Command):实现命令接口,负责执行具体的操作。
  • 接收者类(Receiver):包含了具体的操作方法,由具体命令类调用。
  • 请求者类(Invoker):持有命令对象,并在需要时调用命令的执行方法。
工作原理
  1. 创建命令接口,并声明执行命令的方法,如execute()
  2. 创建具体命令类,实现命令接口,并在execute()方法中调用接收者类的具体操作方法。
  3. 创建接收者类,包含了具体的操作方法。
  4. 创建请求者类,持有命令对象,在需要时调用命令的execute()方法。
优点
  • 解耦请求者和接收者:命令模式将请求者和接收者之间解耦,使得它们可以独立变化,互不影响。
  • 可扩展性:可以轻松添加新的命令类和接收者类,而不会影响已有的代码。
  • 可撤销操作:可以通过维护一个命令历史栈,实现对命令的撤销和重做。
缺点
  • 增加了类和对象的数量:引入命令对象和接收者类,会增加系统中的类和对象的数量。
  • 代码结构复杂化:使用命令模式需要定义许多新的类和接口,因此会增加代码结构的复杂性。
使用场景
  • 需要将请求者和接收者解耦,以便能够在不同的请求者和接收者之间进行灵活的变动和组合。
  • 需要支持撤销操作。
  • 需要将一系列的操作队列化,即可以将命令对象存储在列表中,并按顺序执行。

示例

下面以一个简单的股票交易系统为例,介绍命令模式的应用。

假设我们有一个股票交易系统,我们希望实现以下功能:

  • 可以买入股票(BuyStock命令)。
  • 可以卖出股票(SellStock命令)。
  • 可以撤销上一次的交易操作(Undo命令)。

首先,我们定义命令接口Command,声明了一个execute()方法:

public interface Command {void execute();
}

然后,我们创建具体的买入股票命令BuyStockCommand,实现了Command接口:

public class BuyStockCommand implements Command {private StockTrade stockTrade;public BuyStockCommand(StockTrade stockTrade) {this.stockTrade = stockTrade;}public void execute() {stockTrade.buy();}
}

再创建具体的卖出股票命令SellStockCommand,同样实现了Command接口:

public class SellStockCommand implements Command {private StockTrade stockTrade;public SellStockCommand(StockTrade stockTrade) {this.stockTrade = stockTrade;}public void execute() {stockTrade.sell();}
}

接下来,我们创建股票交易类StockTrade,它包含了具体的买入和卖出操作:

public class StockTrade {public void buy() {System.out.println("买入股票");}public void sell() {System.out.println("卖出股票");}
}

最后,我们创建请求者类StockBroker,它持有命令对象,并在需要时调用命令的execute()方法:

public class StockBroker {private Command buyStockCommand;private Command sellStockCommand;private Command undoCommand;public StockBroker(Command buyStockCommand, Command sellStockCommand, Command undoCommand) {this.buyStockCommand = buyStockCommand;this.sellStockCommand = sellStockCommand;this.undoCommand = undoCommand;}public void buyStock() {buyStockCommand.execute();}public void sellStock() {sellStockCommand.execute();}public void undo() {undoCommand.execute();}
}

现在,我们可以创建股票交易系统的实例,并进行操作:

public class CommandExample {public static void main(String[] args) {// 创建股票交易对象StockTrade stockTrade = new StockTrade();// 创建具体的命令对象Command buyStockCommand = new BuyStockCommand(stockTrade);Command sellStockCommand = new SellStockCommand(stockTrade);// 创建请求者对象StockBroker stockBroker = new StockBroker(buyStockCommand, sellStockCommand, buyStockCommand);// 执行买入操作stockBroker.buyStock(); // 买入股票// 执行卖出操作stockBroker.sellStock(); // 卖出股票// 撤销操作stockBroker.undo(); // 买入股票}
}

运行结果如下:

买入股票
卖出股票
买入股票

http://www.yayakq.cn/news/919421/

相关文章:

  • 河南建一个网站大概要多少钱wordpress首页不加载图片不显示
  • 桂林北站到两江机场大巴时刻表黄山家居网站建设怎么样
  • 乐清网站制作的公司长春 网络设计
  • 深圳专业的网站制作公司asp.net 4.0网站开发实例教程
  • 公司营销网站怎么做深圳市卓越迈创
  • 淘宝怎么优化关键词排名吉林关键词排名优化软件
  • 无锡市建设培训中心网站吉林省吉林市地图
  • 大连网站建设解决方案想学广告设计没有基础
  • 有没有只做软装方案收设计费的网站广州平面设计公司
  • 合肥市做网站多少钱网页传奇游戏排行
  • 秦皇岛网站开发价格app001推广平台官网
  • 什么网站可以免费做视频的软件有哪些聊城住房和城乡建设部网站
  • 广东网站开发哪家腾讯wordpress 建站
  • 15年做那些网站致富搭建电子商务平台
  • 郑州企业建站网站网站适配手机屏幕
  • 在库言库建筑网站图文店做网站有用处吗
  • 网站开发 流程图永久虚拟主机
  • 宁波网站推广工具衡器行业网站建设模板
  • 重庆网站建设外包商务服饰网站建设
  • 制作简单门户网站步骤物联网平台介绍
  • 网站建设与维护面试做网站贵不
  • 做导购网站宿迁房产网二手房
  • 西安做网站公司有哪些网站备案信息更改审核要多久
  • 可以用足球做的游戏视频网站自己如何做网站建设
  • 网站建设管理要求重庆外贸网站建设公司排名
  • 门户网站维护方案博客网站是自己做的吗
  • 做网站上传的图片显示变形网站备案是否收费
  • 微信有网站开发吗长春网站建设索q479185700
  • 顺企网萍乡网站建设wordpress搬家教程
  • 做物流百度网站建设一个视频网站首页