命令模式
编辑教程Java设计模式 - 命令模式
命令模式是数据驱动设计模式它是行为模式之一。
请求被作为命令的对象包装传递给invoker对象。
Invoker对象将命令传递到相应的对象并且该对象执行该命令。
例子
import java.util.ArrayList;
import java.util.List;
interface Command {
void execute();
}
class MouseCursor {
private int x = 10;
private int y = 10;
public void move() {
System.out.println("Old Position:"+x +":"+y);
x++;
y++;
System.out.println("New Position:"+x +":"+y);
}
public void reset() {
System.out.println("reset");
x = 10;
y = 10;
}
}
class MoveCursor implements Command {
private MouseCursor abcStock;
public MoveCursor(MouseCursor abcStock) {
this.abcStock = abcStock;
}
public void execute() {
abcStock.move();
}
}
class ResetCursor implements Command {
private MouseCursor abcStock;
public ResetCursor(MouseCursor abcStock) {
this.abcStock = abcStock;
}
public void execute() {
abcStock.reset();
}
}
class MouseCommands {
private List<Command> orderList = new ArrayList<Command>();
public void takeOrder(Command order) {
orderList.add(order);
}
public void placeOrders() {
for (Command order : orderList) {
order.execute();
}
orderList.clear();
}
}
public class Main {
public static void main(String[] args) {
MouseCursor cursor = new MouseCursor();
MoveCursor moveCursor = new MoveCursor(cursor);
ResetCursor resetCursor = new ResetCursor(cursor);
MouseCommands commands= new MouseCommands();
commands.takeOrder(moveCursor);
commands.takeOrder(resetCursor);
commands.placeOrders();
}
}
以上代码生成结果为:
Old Position:10:10
New Position:11:11
reset
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟