- 浏览: 178177 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
3. 行为型模式 (6) 命令模式
1. 命令模式
2. 命令模式
命令模式(Command Pattern)以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
1. 命令模式
package com.andrew.pattern0306.command.model01; public interface Order { void execute(); }
package com.andrew.pattern0306.command.model01; public class Stock { private String name = "ABC"; private int quantity = 10; public void buy() { System.out.println("Stock [ Name: " + name + ", Quantity: " + quantity + " ] bought"); } public void sell() { System.out.println("Stock [ Name: " + name + ", Quantity: " + quantity + " ] sold"); } }
package com.andrew.pattern0306.command.model01; public class BuyStock implements Order { private Stock abcStock; public BuyStock(Stock abcStock) { this.abcStock = abcStock; } public void execute() { abcStock.buy(); } } package com.andrew.pattern0306.command.model01; public class SellStock implements Order { private Stock abcStock; public SellStock(Stock abcStock) { this.abcStock = abcStock; } public void execute() { abcStock.sell(); } }
package com.andrew.pattern0306.command.model01; import java.util.ArrayList; import java.util.List; public class Broker { private List<Order> orderList = new ArrayList<Order>(); public void takeOrder(Order order) { orderList.add(order); } public void placeOrders() { for (Order order : orderList) { order.execute(); } orderList.clear(); } }
package com.andrew.pattern0306.command.model01; /** * 1. 命令模式 * * @author andrew * @date 2018/08/17 */ public class Client { public static void main(String[] args) { Stock abcStock = new Stock(); BuyStock buyStockOrder = new BuyStock(abcStock); SellStock sellStockOrder = new SellStock(abcStock); Broker broker = new Broker(); broker.takeOrder(buyStockOrder); broker.takeOrder(sellStockOrder); broker.placeOrders(); } } 运行结果: Stock [ Name: ABC, Quantity: 10 ] bought Stock [ Name: ABC, Quantity: 10 ] sold
角色: 1. Command:定义命令的接口,声明执行的方法。 2. ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。 3. Receiver:接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。 4. Invoker:要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。 5. Client:创建具体的命令对象,并且设置命令对象的接收者。注意这个不是我们常规意义上的客户端,而是在组装命令对象和接收者,或许,把这个Client称为装配者会更好理解,因为真正使用命令的客户端是从Invoker来触发执行。
2. 命令模式
package com.andrew.pattern0306.command.model02; public interface Command { void execute(); }
package com.andrew.pattern0306.command.model02; public class CommandOn implements Command { private Tv myTv; public CommandOn(Tv tv) { myTv = tv; } public void execute() { myTv.turnOn(); } } package com.andrew.pattern0306.command.model02; public class CommandOff implements Command { private Tv myTv; public CommandOff(Tv tv) { myTv = tv; } public void execute() { myTv.turnOff(); } } package com.andrew.pattern0306.command.model02; public class CommandChange implements Command { private Tv myTv; private int channel; public CommandChange(Tv tv, int channel) { myTv = tv; this.channel = channel; } public void execute() { myTv.changeChannel(channel); } }
package com.andrew.pattern0306.command.model02; public class Tv { public int currentChannel = 0; public void turnOn() { System.out.println("The tv is on."); } public void turnOff() { System.out.println("The tv is off."); } public void changeChannel(int channel) { this.currentChannel = channel; System.out.println("Now TV channel is " + channel); } }
package com.andrew.pattern0306.command.model02; public class Control { private Command onCommand, offCommand, changeChannel; public Control(Command on, Command off, Command channel) { onCommand = on; offCommand = off; changeChannel = channel; } public void turnOn() { onCommand.execute(); } public void turnOff() { offCommand.execute(); } public void changeChannel() { changeChannel.execute(); } }
package com.andrew.pattern0306.command.model02; /** * 2. 命令模式 * * @author andrew * @date 2018/08/17 */ public class Client { public static void main(String[] args) { Tv myTv = new Tv(); CommandOn on = new CommandOn(myTv); CommandOff off = new CommandOff(myTv); CommandChange channel = new CommandChange(myTv, 2); Control control = new Control(on, off, channel); control.turnOn(); control.changeChannel(); control.turnOff(); } } 运行结果: The tv is on. Now TV channel is 2 The tv is off.
发表评论
-
3. 行为型模式 (11) 解释器模式
2018-11-08 10:39 3733. 行为型模式 (11) 解释器模式 解释器模式(In ... -
3. 行为型模式 (10) 中介者模式
2018-11-08 09:56 3423. 行为型模式 (10) 中介者模式 中介者模式(Me ... -
3. 行为型模式 (9) 访问者模式
2018-11-07 14:30 3463. 行为型模式 (9) 访问者模式 访问者模式(Vis ... -
3. 行为型模式 (8) 状态模式
2018-11-07 09:13 4243. 行为型模式 (8) 状态模式 状态模式(State ... -
3. 行为型模式 (7) 备忘录模式
2018-11-06 14:27 4083. 行为型模式 (7) 备忘录模式 备忘录模式(Mem ... -
3. 行为型模式 (5) 责任链模式
2018-11-06 09:40 4063. 行为型模式 (5) 责任链模式 责任链模式(Cha ... -
3. 行为型模式 (4) 迭代子模式
2018-11-05 14:23 3253. 行为型模式 (4) 迭代 ... -
3. 行为型模式 (3) 观察者模式
2018-11-02 16:17 3983. 行为型模式 (3) 观察者模式 当对象间存在一对多 ... -
3. 行为型模式 (2) 模板方法模式
2018-11-02 09:26 3803. 行为型模式 (2) 模板方法模式 在模板模式(Te ... -
3. 行为型模式 (1) 策略模式
2018-11-01 09:23 4193. 行为型模式 (1) 策略模式 在策略模式(Stra ... -
2. 结构型模式 (3) 代理模式
2018-10-29 11:26 3492. 结构型模式 (3) 代理模式 代理模式(Proxy ... -
2. 结构型模式 (7) 享元模式
2018-10-30 13:27 3892. 结构型模式 (7) 享元模式 享元模式(Flywe ... -
2. 结构型模式 (6) 组合模式
2018-10-30 09:50 3422. 结构型模式 (6) 组合模式 组合模式(Compo ... -
2. 结构型模式 (2) 装饰者模式
2018-10-29 09:30 3912. 结构型模式 (2) 装饰器模式 装饰器模式(Dec ... -
2. 结构型模式 (5) 桥接模式
2018-10-30 09:11 3752. 结构型模式 (5) 桥接模式 桥接(Bridge) ... -
2. 结构型模式 (4) 外观模式
2018-10-29 14:20 3312. 结构型模式 (4) 外观模式 外观模式(Fac ... -
2. 结构型模式 (1) 适配器模式
2018-10-26 15:35 3662. 结构型模式 (1) 适配器模式 将一个类的接口转换 ... -
1. 创建型模式 (2) 原型模式
2018-09-12 13:46 4251. 创建型模式 (2) 原型模式 用原型实例指定创建对 ... -
1. 创建型模式 (3) 建造者模式
2018-10-25 16:28 3461. 创建型模式 (3) 建造 ... -
1. 创建型模式 (1) 单例模式
2018-09-12 13:42 4081. 创建型模式 (3) 单例模式 单例模式是为确保一个 ...
相关推荐
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式...
JAVA-设计模式-行为型模式-命令模式
c#设计模式 行为型模式 包括8个设计模式的实验报告+源代码。实验报告包括实验类图和个人总结的一些小技巧,源代码...包括:职责链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式
c++设计模式-行为型模式-命令模式;qt工程 ;c++简单源码; 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将...
NULL 博文链接:https://jacky-dai.iteye.com/blog/2306606
设计模式_行为型_命令模式
C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第15节:行为型模式Command命令模式
14.命令模式...................................................82 15.解释器模式.................................................89 16.迭代器模式.................................................95 17...
命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of ...
1.使用组合命令模式实现多功能开关,让用户进行设置,要么控制教室的所有灯的开和关,要么控制教室所有风扇的开和关,要么控制教室所有空调的开和关,要么控制教室里教学多媒体设备的开和关。2.ATC代表空中交通管制。...
命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式...
本课程重点介绍了十一种行为型模式:职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。
14.命令模式...................................................82 15.解释器模式.................................................89 16.迭代器模式.................................................95 17...
3. 行为型模式:行为型模式关注对象之间的通信和协作,包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式可以帮助...
软件设计模式2021秋-实验3-行为型模式实验报告附源码和类图.zip 组合命令模式、中介者模式、观察者模式、状态模式
3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式...
包含4个实验,组合命令模式(使用组合命令模式实现多功能开关,让用户进行设置,要么控制教室的所有灯的开和关,要么控制教室所有风扇的开和关),中介者模式(ATC代表空中交通管制。空管调解员不过是机场可用的空中...
行为模式 1475.1 CHAIN OF RESPONSIBIL ITY(职责链)—对象行为型模式 1475.2 COMMAND(命令)—对象行为型模式 1545.3 INTERPRETER(解释器)—类行为型模式 1625.4 ITERATOR(迭代器)—对象行为型模式 1715.5 ...