NOTE

6.21 命令模式

1. 定义 2. UML 3. Java 3.1. 命令 - Course - ICommand - CloseCommand - OpenCommand 3.2. 命令执行者 - Me 3.3. Client

Software Architecture & Engineering约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 定义

2. UML

3. Java

3.1. 命令

  • Course
public class Course
{
    public void open()
    {
        System.out.println("open");
    }

    public void close()
    {
        System.out.println("close");
    }
}
  • ICommand
public interface ICommand
{
    void execute();
}
  • CloseCommand
public class CloseCommand implements ICommand
{
    private Course course;

    public CloseCommand(Course course)
    {
        this.course = course;
    }

    @Override
    public void execute()
    {
        this.course.close();
    }
}
  • OpenCommand
public class OpenCommand implements ICommand
{
    private Course course;

    public OpenCommand(Course course)
    {
        this.course = course;
    }

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

3.2. 命令执行者

  • Me

public class Me
{
    private List<ICommand> commands = new ArrayList<>();

    public void addCommand(ICommand command)
    {
        this.commands.add(command);
    }

    public void executeCommand()
    {
        for (ICommand command : commands)
        {
            command.execute();
        }
    }
}

3.3. Client

public class Client
{
    public static void main(String[] args)
    {
        Me me = new Me();
        Course course = new Course();
        me.addCommand(new OpenCommand(course));
        me.addCommand(new CloseCommand(course));
        me.executeCommand();
    }
}

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看