二十三种设计模式第十九篇--命令模式

这篇具有很好参考价值的文章主要介绍了二十三种设计模式第十九篇--命令模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

命令模式是一种行为设计模式,它将请求封装成一个独立的对象,从而允许您以参数化的方式将客户端代码与具体实现解耦。在命令模式中,命令对象充当调用者和接收者之间的中介。这使您能够根据需要将请求排队、记录请求日志、撤销操作等。

命令模式的核心组成部分包括:

命令接口(Command Interface):定义了执行操作的方法。 具体命令(Concrete
Command):实现了命令接口,并将具体的请求与实际的接收者相关联。
调用者(Invoker):接收客户端的请求,并将其转发给具体命令对象。 接收者(Receiver):实际执行操作的对象。

命令模式的优点包括:

  1. 解耦调用者和接收者:调用者无需知道具体执行操作的细节,只需通过命令对象调用相应的方法。
  2. 容易扩展和维护:可以方便地添加新的命令和接收者,因为每个命令都是独立的对象。
  3. 支持撤销和重做操作:由于所有命令都被封装成对象,可以轻松地实现撤销和重做功能。

然而,命令模式也有一些限制和适用场景:

  • 增加了类的数量:每个命令都需要一个具体的命令类,这可能导致系统中类的数量增加。
  • 不适合复杂的命令操作:如果命令需要多个步骤或复杂的逻辑,可能需要使用其他模式来更好地处理。

二十三种设计模式第十九篇--命令模式,# 设计模式,设计模式,命令模式

public interface Order {
   void execute();
}
public class SellStock implements Order {
   private Stock abcStock;
 
   public SellStock(Stock abcStock){
      this.abcStock = abcStock;
   }
 
   @Override
   public void execute() {
      abcStock.sell();
   }
}
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 +" ] 卖");
   }
}

public class BuyStock implements Order {
   private Stock abcStock;
 
   public BuyStock(Stock abcStock){
      this.abcStock = abcStock;
   }
 
   @Override
   public void execute() {
      abcStock.buy();
   }
}
public class Broker {
   //组装命令
   private List<Order> orderList = new ArrayList<Order>(); 

   //接收命令,存到命令列表中
   public void takeOrder(Order order){
      orderList.add(order);      
   }

   //循环命令列表,逐个执行.
   public void placeOrders(){
      for (Order order : orderList) {
         order.execute();
      }
      orderList.clear();
   }
}
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();
   }
}

注意:看得懂代码和写代码是两个概念,写得出高质量代码和写的出代码又是两个概念!!!这话是说给自己本人的,学习当永无止境,从事IT行业者更是如此,经验的积累并非一朝一夕就可以完成的,而是需要不断的尝试,从众多选择中获取最优的选择,这个方才是我从事这份行业中最宝贵的收货,初级-中级-高级是需要一段时间过度的,路在脚下,一个坑一个坑的踩着走,不知道有无踩的终点,但是在一路上将坑一个一个的填平,即便是没有填平的坑下次遇到就小心一点就是了,这方才是我们在这个行业最大的收货。文章来源地址https://www.toymoban.com/news/detail-627303.html

到了这里,关于二十三种设计模式第十九篇--命令模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 二十三种设计模式第十五篇--模版方法模式

    二十三种设计模式第十五篇--模版方法模式

    模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,而将一些步骤延迟到子类中实现。通过使用这种模式,我们可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。 模板方法模式的核心思想是将一个算法分解为一系列步骤,并将可变的部分封装在

    2024年02月12日
    浏览(12)
  • 二十三种设计模式第十六篇--观察者模式

    二十三种设计模式第十六篇--观察者模式

    观察者模式是一种行为型设计模式,它建立了一种对象间的一对多依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。这种模式可以实现对象间的松耦合通信,提高系统的可扩展性和灵活性。 观察者模式的核心是两个角色:主题(

    2024年02月12日
    浏览(12)
  • 二十三种设计模式:工厂模式

    工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露对象的创建逻辑。工厂模式通过使用工厂方法来解决这个问题,该方法将对象的创建委托给子类来处理。 在工厂模式中,我们定义一个抽象工厂类,它包含一个抽象的工厂方法,该方法返回一个

    2024年02月07日
    浏览(13)
  • 二十三种设计模式(待更)

    二十三种设计模式(待更)

    资料来源于老师讲解以及大佬的设计模式仓库 zhengqingya 将对象和类按某种布局组成更大的结构,并同时保持结构的灵活和⾼效。 1.适配器 适配器就是将原先无法直接使用的某个接口或者类通过适配器模式转换为可以使用的接口或者类。将一个类的接口转换成客户希望的另外

    2024年02月08日
    浏览(10)
  • 二十三种设计模式第二十篇--备忘录模式

    二十三种设计模式第二十篇--备忘录模式

    备忘录模式,备忘录模式属于行为型模式。它允许在不破坏封装的情况下捕获和恢复对象的内部状态。 保存一个对象的某个状态,以便在适当的时候恢复对象,该模式通过创建一个备忘录对象来保存原始对象的状态,并将其存储在一个负责管理备忘录的负责人对象中。 备忘

    2024年02月14日
    浏览(13)
  • 二十三种设计模式第二十四篇--访问者模式(完结撒花)

    二十三种设计模式第二十四篇--访问者模式(完结撒花)

    在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。 通过这种方式,元素的执行算法可以随着访问者改变而改变。 这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的

    2024年02月14日
    浏览(13)
  • 二十三种设计模式全面解析-抽象工厂模式:创造无限可能的工厂之道

    在软件开发中,我们经常面临着创建一系列相关或相互依赖的对象的挑战。在这个过程中,我们希望能够灵活地创建对象,又不与具体的类耦合。那么有没有一种设计模式可以帮助我们实现这一目标呢?答案是肯定的!让我带你进入抽象工厂模式的世界,一起探索创造无限可

    2024年02月07日
    浏览(10)
  • 二十三种设计模式全面解析-原型模式进阶之原型管理器:集中管理对象原型的设计模式之道

    在软件开发中,我们经常需要创建和复制对象。然而,有时候直接创建对象可能会导致性能下降或代码重复。为了解决这些问题,原型模式应运而生。而使用原型管理器(Prototype Manager)来集中管理原型对象可以进一步提高灵活性和可维护性。本文将详细介绍原型管理器的用

    2024年02月07日
    浏览(12)
  • 二十三种设计模式全面解析-装饰器模式的高级应用:打造灵活可扩展的通知系统

    在现代软件开发中,通知系统是一个广泛应用的功能,用于实时向用户发送各种类型的通知,如短信、微信、邮件以及系统通知。然而,通知系统的需求通常是多变且动态的,因此需要一种灵活可扩展的设计模式来满足不同类型的通知需求。 在前面一篇文章中,我们介绍了什

    2024年02月06日
    浏览(14)
  • 二十三种设计模式全面解析-桥接模式的高级应用:构建灵活的跨平台UI框架

    在软件开发的世界中,桥接模式(Bridge Pattern)作为一种设计模式,旨在将抽象部分与实现部分分离,从而使它们可以独立地变化。这一模式的应用不仅有助于提高代码的可维护性,还在一些复杂的场景中展现出其真正的价值。 前面一篇文章中,我们介绍了什么是桥接模式?

    2024年02月05日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包