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

益阳网站建设公司有哪些搜外友链

益阳网站建设公司有哪些,搜外友链,WordPress文字添加,东莞我的网站建设文章目录 引言命令模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用股票示例代码地址 引言 想象一下#xff0c;你在一个忙碌的厨房里#xff0c;厨师们正忙于准备各种菜肴。每当服务员带来一个新订单时#xff0c;他们不会直接对厨师说需要做什么菜。相… 文章目录 引言命令模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用股票示例代码地址 引言 想象一下你在一个忙碌的厨房里厨师们正忙于准备各种菜肴。每当服务员带来一个新订单时他们不会直接对厨师说需要做什么菜。相反订单被写在纸上并放置在一个订单队列中。厨师们会一个接一个地取订单并准备相应的菜肴。这里每个订单就像是一个“命令”它包含了需要执行的所有信息。在软件开发中我们处理命令时也可以采取类似的方式。命令模式允许我们以同样的方式封装所有信息这些信息需要执行某项操作或触发某个事件然后像传递订单一样传递这些命令。 命令模式简介 定义与用途 命令模式Command Pattern是一种行为型设计模式它将一个请求或简单操作封装为一个对象。这种模式允许用户根据不同的请求将方法调用、请求或操作封装到单独的对象中并将这些对象传递给调用者。调用者随后可以根据需求执行这些操作。这种模式通常用于队列操作、回调操作和对请求的日志记录。 实现方式 实现命令模式涉及以下几个关键组件 命令接口Command定义了执行操作的接口。具体命令Concrete Command实现命令接口定义接收者上执行的动作。接收者Receiver执行与请求相关联的操作。调用者Invoker持有命令并在某个时间点调用命令的执行方法。客户端Client创建具体命令并设置其接收者。 使用场景 命令模式适用于以下场景 当需要将请求发送者和请求接收者解耦时。 当需要对请求的排队、记录或可撤销操作时。 在需要支持宏命令和事务系统的场景中。 例如 GUI按钮和菜单项GUI的按钮和菜单项通常使用命令模式来处理用户输入。事务型行为命令模式可以用来实现事务系统其中命令有执行和回滚两种操作。多级撤销功能在支持撤销操作的系统中命令模式可以用来记录操作的历史以便用户可以撤销或重做它们。 优势与劣势 优势 降低系统的耦合度命令模式将调用操作的对象与知道如何实施该操作的对象解耦。 增强了扩展性可以很容易地增加新的命令。 可以组合命令可以组合多个命令实现复杂的功能。劣势 可能会导致某些系统有过多的具体命令类。 在Spring框架中的应用 JdbcTemplate 是Spring框架中使用命令模式的一个很好的例子。在JdbcTemplate的上下文中命令模式提供了一种强大的机制来抽象和封装对数据库的各种操作。它允许JdbcTemplate通过执行各种StatementCallback实现来灵活地执行各种操作同时保持其自身的简洁和不涉及具体数据库操作的逻辑。 1命令接口Command- StatementCallback StatementCallbackT接口 在这个上下文中类似于命令模式中的命令接口。它定义了一个doInStatement(Statement stmt)方法该方法接收一个Statement对象作为参数。不同的实现将对数据库执行不同的操作。 2具体命令和接收者 - QueryStatementCallBack和其他实现 具体命令 由实现StatementCallback接口的类表示例如QueryStatementCallBack。这些类封装了对数据库执行特定操作的逻辑。 同时充当命令接收者在这种情况下具体命令类例如QueryStatementCallBack不仅表示命令还包含执行命令所需的逻辑因此它们也扮演了接收者的角色。它们知道如何操作数据库来执行特定的操作。 3命令调用者 - JdbcTemplate JdbcTemplate 是命令调用者。它提供了一个execute方法该方法接受一个StatementCallback对象。JdbcTemplate不关心StatementCallback的具体操作它只调用doInStatement方法并传递必要的Statement对象。这样JdbcTemplate就可以执行各种不同的数据库操作而不需要知道具体的细节。 4不同的具体命令实现 StatementCallback的其他实现如QueryStatementCallback为不同类型的数据库操作提供了具体实现。每个实现都有自己独特的doInStatement方法它们封装了如何使用传递给它们的Statement来执行操作。股票示例 步骤 1创建命令接口 首先定义了一个 Order 接口作为命令的角色。 public interface Order {void execute(); }这个接口定义了一个execute方法所有的命令都将实现这个方法来执行它们的操作。 步骤 2创建请求类 创建了一个 Stock 类作为请求的角色。 public class Stock {private String name ABC;private int quantity 10;public void buy(){System.out.println(股票 [ 名称: name, 数量: quantity ] 购买了);}public void sell(){System.out.println(股票 [ 名称: name, 数量: quantity ] 卖出了);} }这个类代表一个股票有买入和卖出的操作。 步骤 3创建具体命令类 创建了实现Order接口的具体命令类。 public class BuyStock implements Order {private Stock abcStock;public BuyStock(Stock abcStock){this.abcStock abcStock;}Overridepublic void execute() {abcStock.buy();} }public class SellStock implements Order {private Stock abcStock;public SellStock(Stock abcStock){this.abcStock abcStock;}Overridepublic void execute() {abcStock.sell();} }BuyStock和SellStock是具体的命令分别代表购买股票和出售股票的操作。 步骤 4创建命令调用者类 创建了一个 Broker 类作为命令的调用者。 import java.util.ArrayList; import java.util.List;public class Broker {private ListOrder orderList new ArrayListOrder(); public void takeOrder(Order order){orderList.add(order); }public void placeOrders(){for (Order order : orderList) {order.execute();}orderList.clear();} }Broker 可以接受和存储命令然后一次性执行这些命令。它通过调用每个命令的execute方法来执行命令。 步骤 5使用 Broker 类来接受和执行命令 public class CommandPatternDemo {public static void main(String[] args) {Stock abcStock new Stock();BuyStock buyStockOrder new BuyStock(abcStock);SellStock sellStockOrder new SellStock(abcStock);Broker broker new Broker();broker.takeOrder(buyStockOrder);broker.takeOrder(sellStockOrder);broker.placeOrders();} } 在这个客户端中我们创建了买入和卖出股票的命令然后通过Broker来执行它们。这个例子演示了命令模式如何用于参数化对象以及如何将请求排队等待执行。 代码地址 23种设计模式相关代码后续会逐步提交到github上方便学习欢迎指点 代码地址 https://github.com/RuofeiSun/lf-23Pattern
http://www.yutouwan.com/news/7175/

相关文章:

  • 网站开发与应用dw制作一个手机网站模板
  • 深圳做企业网站的公司推荐建设工程机械职业技能鉴定
  • 网站建设实验分析阜新市建设学校管方网站
  • 上海建设网站哪家好有网络网站打不开
  • 帮别人做违法网站会怎么样网站ui设计是什么意思
  • 易班网站的建设内容最新免费网站收录提交入口
  • 阿里云建设网站好吗wordpress用户名怎么起
  • 行业数据网站二维码生成在线制作
  • 网站托管解决方案app开发企业
  • wordpress网站上传服务器商城网站不易优化
  • 蓝色清爽网站快速搭建网站服务器
  • 阿克苏网站建设价格成都诗和远方网站建设
  • seo网站首页推广wordpress批量传图片
  • wordpress网站空间wordpress加百度一下
  • 优化手机访问网站速度小说网站做封面要钱吗
  • z怎么建设视频网站分析杭州高端网站建设开发的区别
  • wordpress仿站实战做家教备课用什么网站
  • 遨翔网站建设照片网站模版
  • 哪个公司做企业网站好html个人网站源码
  • 网站的备案信息wordpress响应慢原因
  • 吉林做网站wordpress企业内网主题
  • 太原 招聘 网站建设 技术经理设计开发流程
  • 网站建设及管理制度文章网站建设策
  • 如何用网站做课件vue vs wordpress
  • 微擎 网站开发工具网站建设 比选
  • wordpress msn space云浮seo
  • 建公司网站要多久广州网站设计建站
  • 临夏市建设局网站移动网站怎么做
  • 抚顺地区网站建设昆明网站建设兼职
  • 吉林省住房和建设厅网站一级a做爰片在线看免播放器网站