项目源码已提交github:https://github.com/ckl001/designPattem_java
package com.Ljava.design.pattem.behavioral.command;
/**
* @Auther 20173
* @Date 2019-4-10 15:03
* @Des 命令 (接口)
**/
public interface Command {
void execute();
}
package com.Ljava.design.pattem.behavioral.command;
import java.util.ArrayList;
import java.util.List;
/**
* @Auther 20173
* @Date 2019-4-10 15:06
* @Des 负责视频开关的 工作人员
**/
public class Staff {
private List<Command> commandList = new ArrayList<>();
public void addCommand(Command command){
commandList.add(command);
}
public void executeCommands(){
for(Command command : commandList){
command.execute();
}
commandList.clear();
}
}
package com.Ljava.design.pattem.behavioral.command;
/**
* @Auther 20173
* @Date 2019-4-10 15:01
* @Des 课程视频
**/
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 + "课程视频");
}
}
package com.Ljava.design.pattem.behavioral.command;
/**
* @Auther 20173
* @Date 2019-4-10 15:04
* @Des 命令 打开视频
**/
public class OpenCourseVideoCommand implements Command {
private CourseVideo courseVideo;
public OpenCourseVideoCommand(CourseVideo courseVideo) {
this.courseVideo = courseVideo;
}
@Override
public void execute() {
courseVideo.open();
}
}
package com.Ljava.design.pattem.behavioral.command;
/**
* @Auther 20173
* @Date 2019-4-10 15:06
* @Des 命令 关闭视频
**/
public class CloseCourseVideoCommand implements Command {
private CourseVideo courseVideo;
public CloseCourseVideoCommand(CourseVideo courseVideo) {
this.courseVideo = courseVideo;
}
@Override
public void execute() {
courseVideo.close();
}
}
package com.Ljava.design.pattem.behavioral.command;
/**
* @Auther 20173
* @Date 2019-4-10 15:09
* @Des TODO
**/
public class Test {
public static void main(String[] args) {
CourseVideo courseVideo = new CourseVideo("Java课程视频 -- ck.com");
OpenCourseVideoCommand openCourseVideoCommand = new OpenCourseVideoCommand(courseVideo);
CloseCourseVideoCommand closeCourseVideoCommand = new CloseCourseVideoCommand(courseVideo);
Staff staff = new Staff();
staff.addCommand(openCourseVideoCommand);
staff.addCommand(closeCourseVideoCommand);
staff.executeCommands();
}
}