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

设计模式-命令模式

一、所用到的类

一个接受者类:里面有N个方法
一个命令接口:里面有一个命令方法,目的是用来执行接收者的命令
N个命令实现类:目的是封装接收者的N个方法
一个调用类:用来将N个命令类通过add的方式添加到一起并通过接口中的那个方法来执行。

二、实现代码

接收者类

public class Stock {private String name = "ABC";private int quantity = 10;public void buy() {System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] bought");}public void sell() {System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] sold");}
}

命令接口

public interface Order {void execute();
}

封装接收者方法的第一个类

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();}
}

聚合类

public class Broker {private List<Order> orderList = new ArrayList<>();public void takeOrder(Order order){orderList.add(order);}public void placeOrders(){for (Order order : orderList) {order.execute();}orderList.clear();}
}

调用类

@SpringBootApplication
public class CommandApplication {public static void main(String[] args) {Stock stock = new Stock();Order buyStock = new BuyStock(stock);Order sellStock = new SellStock(stock);Broker broker = new Broker();broker.takeOrder(buyStock);broker.takeOrder(sellStock);broker.placeOrders();}
}

三、总结

该种设计模式是对 接受类 中的各个方法来进行封装,最终调用同一个方法就能实现不同的效果。

http://www.lqws.cn/news/592129.html

相关文章:

  • 昆泰芯3D霍尔磁传感器芯片在汽车零部件中的应用
  • OpenCV-Python Tutorial : A Candy from Official Main Page(二)
  • 使用FFmpeg+SDL2读取本地摄像头并渲染
  • 07 Springboot+netty+mqtt服务端实现【重构】
  • php-mqtt/client 发布、订阅
  • 学习threejs,使用自定义GLSL 着色器,生成艺术作品
  • Redis-渐进式遍历
  • Android实现仿iOS风格滚动时间选择器
  • 【机器学习深度学习】理解欠拟合、拟合、过拟合
  • React安装使用教程
  • Linux->进程控制(精讲)
  • 文心一言开源版测评:能力、易用性与价值的全面解析
  • 通过http调用来访问neo4j时报错,curl -X POST 执行指令报错
  • 博途多重背景、参数实例
  • swing音频输入
  • 跨境证券交易系统合规升级白皮书:全链路微秒风控+开源替代,护航7月程序化交易新规落地
  • 7.可视化的docker界面——portainer
  • CloudBase AI ToolKit实战:从0到1开发一个智能医疗网站
  • LLM中的思维链,仅仅在提示词中加上思维链,让模型输出,和加上思维链限制模型输出答案,这两方式模型是不是进行了思考的
  • 鸿蒙Next开发中三方库使用指南之-nutpi-privacy_dialog集成示例
  • 用“做饭”理解数据分析流程(Excel三件套实战)​
  • 网站崩溃的幕后黑手:GPTBot爬虫的流量冲击
  • 论文阅读:Align and Prompt (ALPRO 2021.12)
  • 零开始git使用教程-传html文件
  • 浅谈Docker Kicks in的应用
  • 51单片机制作万年历
  • 观察者模式
  • 新版本 Spring Data Jpa + QueryDSL 使用教程
  • TensorFlow源码深度阅读指南
  • 【科研绘图系列】基于R语言的复杂热图绘制教程:环境因素与染色体效应的可视化