做外贸兼职的网站有哪些,网站建设中建站广告html单页面,红安县城乡建设局官方网站,推广网站怎么做模版设计模式—行为型模式之命令模式
命令#xff08;Command#xff09;模式#xff1a;将一个请求封装为一个对象#xff0c;使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通#xff0c;这样方便将命令对象进行储存、传递、调用、增加与管理。 …设计模式—行为型模式之命令模式
命令Command模式将一个请求封装为一个对象使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通这样方便将命令对象进行储存、传递、调用、增加与管理。
命令模式包含以下主要角色。
抽象命令类Command角色声明执行命令的接口拥有执行命令的抽象方法 execute()。具体命令类Concrete Command角色是抽象命令类的具体实现类它拥有接收者对象并通过调用接收者的功能来完成命令要执行的操作。实现者/接收者Receiver角色执行命令功能的相关操作是具体命令对象业务的真正实现者。调用者/请求者Invoker角色是请求的发送者它通常拥有很多的命令对象并通过访问命令对象来执行相关请求它不直接访问接收者。
示例
实际上我们日常开发过程中mvc三层开发就是一种命令模式的实现。
我们看一个其他的例子。
宠物狗的主人可以让宠物吃饭玩耍。
命令接口类如下
public interface Command {/*** 命令的执行方法*/void execute();
}命令执行者如下
/*** 命令接收者*/
public class Dog {public void eat(){System.out.println(小狗吃饭);}public void play(){System.out.println(小狗玩耍);}
}吃饭命令类如下
/*** 吃饭命令类*/
public class EatCommand implements Command{private Dog dog;public EatCommand(Dog dog) {this.dog dog;}Overridepublic void execute() {dog.eat();}
}玩耍命令类如下
/*** 玩耍命令类*/
public class PlayCommand implements Command{private Dog dog;public PlayCommand(Dog dog) {this.dog dog;}Overridepublic void execute() {dog.play();}
}命令发起者如下
/*** 命令发起者*/
public class Human {private Command command;public void setCommand(Command command) {this.command command;}public void call(){command.execute();}}测试类如下
public class CommandTest {public static void main(String[] args) {Dog dog new Dog();EatCommand eatCommand new EatCommand(dog);PlayCommand playCommand new PlayCommand(dog);Human human new Human();human.setCommand(eatCommand);human.call();human.setCommand(playCommand);human.call();}
}运行结果如下