【Java中23种面试常考的设计模式之命令模式(Command)---行为型模式】

本文围绕Java中的命令模式展开,它是面试常考的23种设计模式之一,属于行为型模式。介绍了命令模式的概念、解决的请求者与实现者紧耦合问题,阐述了其在生产开发中的使用场景、优缺点,还说明了核心角色,最后给出实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Java中23种面试常考的设计模式之命令模式(Command)—行为型模式】

知识回顾:

之前我们讲过的设计模式在这里呦:
【面试最常见的设计模式之单例模式】
【面试最常见的设计模式之工厂模式】
【Java中23种面试常考的设计模式之备忘录模式(Memento)—行为型模式】
【Java中23种面试常考的设计模式之观察者模式(Observer)—行为型模式】
【Java中23种面试常考的设计模式之模板模式(Template)—行为型模式】
【Java中23种面试常考的设计模式之状态模式(State)—行为型模式】
【Java中23种面试常考的设计模式之策略模式(Strategy)—行为型模式】
【Java中23种面试常考的设计模式之迭代器模式(Iterator)—行为型模式】
【Java中23种面试常考的设计模式之访问者模式(Visitor)—行为型模式】
【Java中23种面试常考的设计模式之中介者模式(Mediator)—行为型模式】
【Java中23种面试常考的设计模式之解释器模式(Interpreter)—行为型模式】
接下来我们要进行学习的是:【Java中23种面试常考的设计模式之命令模式(Command)—行为型模式。

命令模式

命令模式:请求以命令的形式封装在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。

解决的问题

  1. 请求者与实现者通常是一种紧耦合的关系。这种关系越紧密就影响类之间的关系。所以我们需要降低耦合度。

生产开发中常用的使用场景

  1. 数据库事务机制的底层实现。
  2. 记录命令、命令的撤销与恢复。

命令模式优点与缺点

优点
  1. 降低了系统耦合度。
  2. 可扩展性强。
缺点
  1. 具体命令的实现类过多,不利于维护。

核心角色

Command 声明执行操作的接口,定义一个规则Exexute。
ConcreteCommand 将一个接收者对象绑定于一个动作, 调用接收者相应的操作,以实现Execute规则。
Invoke 要求该命令执行这个请求。
Receiver 知道如何实现与执行一个请求相关的操作。任何类都可能作为一个接收者。
Client–Main 创建一个具体命令对象并设定它的接收者。

UML类图

在这里插入图片描述

实现代码

我们实现这样一个栗子:

Invoke类
package com.command;

public class Invoke {

	private Command command;   
	
	public Invoke(Command command) {
		super();
		this.command = command;
	} 
	
	public void call(){
        System.out.println("Invoke要执行一个命令----》");
		command.execute();
	}	
}
Command接口
package com.command;

public interface Command {
	void execute();
}

ConcreteCommand类
package com.command;

public class ConcreteCommand implements Command {
	
	private Receiver receiver;
	
	public ConcreteCommand(Receiver receiver) {
		super();
		this.receiver = receiver;
	}

	@Override
	public void execute() {
        System.out.println("Command中去匹配合适的执行命令---》");
		receiver.receive();
	}
}

Receiver类
package com.command;

public class Receiver {
	public void receive(){
		System.out.println("Receiver开始执行相关的操作。。。。。");
	}
}
客户端测试代码Client-Main
package com.command;

public class Main {
    public static void main(String[] args) {
        Receiver receiver=new Receiver();
        Command command = new ConcreteCommand(receiver);
        Invoke invoke = new Invoke(command);
        invoke.call();
    }
}

运行结果展示:

在这里插入图片描述

好了,到这里【Java中23种面试常考的设计模式之命令模式(Command)—行为型模式】就结束了,23种设计模式持续更新汇总中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值