设计模式总结篇系列:命令模式(Command)

简介:

在程序设计中,经常会遇到一个对象需要调用另外一个对象的某个方法以达到某种目的,在此场景中,存在两个角色:请求发出者和请求接收者。发出者发出请求,接收者接收请求并进行相应处理。有时候,当需要对请求发出者和接收者进行解耦,即发出者中不能含有接收者的引用,如请求需要进行排队操作,或可能需要对请求进行取消操作等,在此类场景中,请求发出者此时若还是直接操作接收者,将无法满足此类需求。此时,我们可以使用命令模式。

在命令模式中,当一个对象请求另一个对象其调用方法时,不和被请求的对象直接打交道,而是把这种请求封装到一个命令的对象中,封装的手段是将请求封装在命令对象的一个方法中。命令模式的核心就是使用命令对象来封装方法调用。既请求者的请求,接受者调用方法。

下面以常见的首长对官兵下达命令为例:

1.定义官兵类:

复制代码
 1 class Soldier {
 2     
 3     public void zip(){
 4         System.out.println("开始拉练30公里...");
 5     }
 6     
 7     public void stand(){
 8         System.out.println("开始站军姿2小时...");
 9     }
10 
11 }
复制代码

2.定义命令类:

复制代码
 1 class Command{
 2     
 3     private Soldier solider;
 4     
 5     public Command(Soldier solider){
 6         this.solider = solider;
 7     }
 8     
 9     public void stand(){
10         solider.stand();
11     }
12     
13     public void zip(){
14         solider.zip();
15     }
16     
17 }
复制代码

3.定义首长类:

复制代码
 1 class Chief {
 2 
 3     private Command command;
 4 
 5     public Chief(Command command) {
 6         this.command = command;
 7     }
 8 
 9     public void startStand() {
10         command.stand();
11     }
12 
13     public void startZip() {
14         command.zip();
15     }
16 }
复制代码

4.测试:

复制代码
 1 public class CommandTest {
 2 
 3     public static void main(String[] args) {
 4         Soldier soldier = new Soldier();
 5         Command command = new Command(soldier);
 6         Chief chief = new Chief(command);
 7         chief.startStand();
 8     }
 9 
10 }
复制代码

 

---------------------------------------------------------------------------------
笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢!
分类: 设计模式

本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/p/3803022.html,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
设计模式 存储 算法
Java设计模式-命令模式(16)
Java设计模式-命令模式(16)
|
5月前
|
设计模式 存储 Java
【十二】设计模式~~~行为型模式~~~命令模式(Java)
文章详细介绍了命令模式(Command Pattern),这是一种对象行为型模式,用于将请求封装成对象,实现请求发送者与接收者的解耦,从而降低系统耦合度、提高灵活性,并支持命令的排队、记录、撤销和恢复操作。通过案例分析、结构图、时序图和代码示例,文章展示了命令模式的组成部分、实现方式和应用场景,并讨论了其优点、缺点和适用情况。
|
6月前
|
设计模式 JavaScript API
js设计模式【详解】—— 命令模式
js设计模式【详解】—— 命令模式
54 6
|
7月前
|
设计模式
命令模式-大话设计模式
命令模式-大话设计模式
|
7月前
|
设计模式 Java uml
必知的技术知识:JAVA【设计模式】命令模式
必知的技术知识:JAVA【设计模式】命令模式
33 0
|
7月前
|
设计模式 Java
Java设计模式之命令模式详解
Java设计模式之命令模式详解
|
7月前
|
设计模式
设计模式之命令模式
设计模式之命令模式
|
8月前
|
设计模式 Java 调度
【设计模式系列笔记】命令模式
命令模式是一种行为设计模式,它将请求封装成一个对象,从而允许使用不同的请求、队列或日志请求参数化客户端对象,同时支持撤销操作。
74 1
|
8月前
|
设计模式 存储 Java
【设计模式】JAVA Design Patterns——Command(事务模式)
【设计模式】JAVA Design Patterns——Command(事务模式)
|
8月前
|
设计模式 Java 调度
小谈设计模式(24)—命令模式
小谈设计模式(24)—命令模式