B07 命令模式 示例

本文深入解析命令模式在软件设计中的应用,通过实例演示如何利用该模式实现操作的封装,使请求以命令的形式包裹在对象中,进而参数化不同的请求。文章详细介绍了抽象命令接口、具体命令类、命令执行者及客户端的实现过程。

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

示例类图

8195388-5d55fe6f6ccb9f20.png
命令模式.png

示例代码

抽象命令
  • 新定义的接口,用于调用系统中现成的类;
public interface Command {
    void execute();
}
具体命令
  • 新创建的实现了新接口的类,其中组合了系统中现成的类,从而可以用新接口调用系统中现成的类;
public class OpenCourseVideoCommand implements Command {

    private CourseVideo courseVideo;

    public OpenCourseVideoCommand(CourseVideo courseVideo) {
        this.courseVideo = courseVideo;
    }

    @Override
    public void execute() {
        courseVideo.open();
    }

}

public class CloseCourseVideoCommand implements Command {

    private CourseVideo courseVideo;

    public CloseCourseVideoCommand(CourseVideo courseVideo) {
        this.courseVideo = courseVideo;
    }

    @Override
    public void execute() {
        courseVideo.close();
    }

}
具体命令作用的对象
  • 代表的是系统中现成的类;
  • 可以是一个,也可以是多个,总之这些类要被组合到具体命令类中,供调用者用同一个接口调用;
public class CourseVideo {

    private String name;

    public CourseVideo(String name) {
        this.name = name;
    }

    public void open(){
        System.out.println(this.name + "课程视频开放");
    }
    public void close(){
        System.out.println(this.name + "课程视频关闭");
    }

}
命令执行者(调用者)
  • 通过新接口,调用系统中现成的类;
public class Staff {

    private List<Command> commandList = new ArrayList<Command>();

    public void addCommand(Command command){
        commandList.add(command);
    }

    public void executeCommands(){
        for(Command command : commandList){
            command.execute();
        }
        commandList.clear();
    }

}
客户端
  • 是一个把系统中现成的类组合到新业务类中的过程;
public class Test {
    public static void main(String[] args) {
        CourseVideo courseVideo = new CourseVideo("Java设计模式精讲 -- By Geely");

        OpenCourseVideoCommand openCourseVideoCommand = new OpenCourseVideoCommand(courseVideo);
        CloseCourseVideoCommand closeCourseVideoCommand = new CloseCourseVideoCommand(courseVideo);

        Staff staff = new Staff();
        staff.addCommand(openCourseVideoCommand);
        staff.addCommand(closeCourseVideoCommand);

        staff.executeCommands();
    }
}

输出:

Java设计模式精讲 -- By Geely课程视频开放
Java设计模式精讲 -- By Geely课程视频关闭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值