命令模式的本质是将对同一对象的不同操作进行不同封装,但同时又通过接口,提供给调用者一个统一的使用方式,从事隔离调用者对对象操作的复杂逻辑处理。在命令中可以又可以通过接口或类来通过自身持有的接受者来讲操作转移到接受者来负责具体的操作实现。
参见如下代码
package pattern;
public class CommandDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] target={1,2,3,4,5};
Executor.executeCommand(target,new AddCommand());
Executor.executeCommand(target, new StringCommand());
Executor.executeAction(new AddCommand(), new Receiver());
Executor.executeAction(new StringCommand(), new Receiver());
}
}
class Executor{
public static void executeCommand(int[] target,Command command){
command.process(target);
}
public static void executeAction(Command command,Receiver receiver){
command.processAction(receiver);
}
}
interface Command{
void process(int[] target);
void processAction(Receiver receiver);
}
class Receiver{
public void doAction(String action){
System.out.println("执行操作"+action);
}
}
class AddCommand implements Command{
@Override
public void process(int[] target) {
// TODO Auto-generated method stub
int sum=0;
for(int num:target){
sum+=num;
}
System.out.println("AddCommand执行结果"+sum);
}
@Override
public void processAction(Receiver receiver) {
// TODO Auto-generated method stub
System.out.println("AddCommand发出命令");
receiver.doAction("add");
System.out.println("AddCommand执行完成");
}
}
class StringCommand implements Command{
@Override
public void process(int[] target) {
// TODO Auto-generated method stub
StringBuilder sb=new StringBuilder();
for(int num:target){
sb.append(num);
}
System.out.println("StringCommand执行结果"+sb.toString());
}
@Override
public void processAction(Receiver receiver) {
// TODO Auto-generated method stub
System.out.println("StringCommand发出命令");
receiver.doAction("string");
System.out.println("StringCommand执行完成");
}
}
分享到:
相关推荐
主要介绍了Java设计模式——命令模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
设计模式——11职责链模式与命令模式.pptx
设计模式作业——用命令模式编写的烧烤店。
本文实例讲述了Python设计模式之命令模式原理与用法。...设计模式——命令模式 命令模式(Command Pattern):将请求封装成对象,从而使可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作.
书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...
C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...
设计模式之代理模式,请求的链式处理——职责链模式,请求发送者与接收者解耦——命令模式,自定义语言的实现——解释器模式,遍历聚合对象中的元素——迭代器模式,协调多个对象之间的交互——中介者模式,撤销功能...
跟我学设计模式视频教程——命令模式vs策略模式,唠嗑-附件资源
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
4.4.2现实中的装饰模式——相架 126 4.4.3C#实例——图书馆中的项目 127 4.4.4Java实例——自定义JButton 131 4.4.5优势和缺陷 133 4.4.6应用情景 134 4.5FacadePattern(外观模式) 134 4.5.1定义 134 4.5.2...
4.4.2现实中的装饰模式——相架 126 4.4.3C#实例——图书馆中的项目 127 4.4.4Java实例——自定义JButton 131 4.4.5优势和缺陷 133 4.4.6应用情景 134 4.5FacadePattern(外观模式) 134 4.5.1定义 134 4.5.2...
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 二、设计模式的六大原则 1、开闭原则(Open Close...
1.2 Smalltalk MVC中的设计模式 1.3 描述设计模式 1.4 设计模式的编目 1.5 组织编目 1.6 设计模式怎样解决设计问题 1.7 怎样选择设计模式 1.8 怎样使用设计模式 第二章 实例研究:设计一个文档编辑器 2.1 设计问题...
命令模式-Command Pattern 请求发送者与接收者解耦——命令模式(一) 请求发送者与接收者解耦——命令模式(二) 请求发送者与接收者解耦——命令模式(三) 请求发送者与接收者解耦——命令模式(四) 请求发送者...
本文以项目中的一个工作流模块,演示责任链模式、策略模式、命令模式的组合实现!最近在做的一个项目,涉及到的是一个流程性质的需求。关于工程机械行业的服务流程:服务任务流程和备件发运流程。项目之初,需求不是...
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 二、设计...