- 浏览: 25641 次
- 性别:
- 来自: 上海
文章分类
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
机箱上的按钮就相当于命令对象。
机箱相当于Invoker
主板相当于接收者对象,真正实现功能。
命令对象持有一个接收者对象,就相当于给机箱的按钮连上了一个连接线。
当机箱上的按钮被按下时,机箱就把这个命令通过连接线发送出去。
public interface MainBoardApi {
public void open();
}
public class GigaMainBoard implements MainBoardApi {
public void open() {
System.out.pringln("正在开机");
System.out.pringln("接通电源");
System.out.pringln("设备坚持");
System.out.pringln("装载系统");
System.out.pringln("机器正常运转");
System.out.pringln("机器已经正常打开");
}
}
public interface Command {
public void execute();
}
public class OpenCommand implement Command {
private MainBoardApi mainBoard = null;
public OpenCommand(MainBoardApi mainBoard) {
this.mainBoard = mainBoard ;
}
public void execute() {
this.mainBoard.open();
}
}
public class Box {
private Command openCommand;
public void setOpenCommand(Command openCommand) {
this.openCommand = openCommand;
}
public void openButtonPressed() {
openCommand.execute();
}
}
客户端代码:
MainBoardApi mainBoard = new GigaMainBoard();
Command openCommand = new OpenCommand(mainBoard);
Box box = new Box();
box.setOpenCommand(openCommand);
box.openButtonPressed();
可撤销操作:放弃该操作,回到未执行该操作前的状态。
1.补偿式,又称反操作式。
2.存储恢复式
宏命令就是包含多个命令的命令,是一个命令的组合。
机箱上的按钮就相当于命令对象。
机箱相当于Invoker
主板相当于接收者对象,真正实现功能。
命令对象持有一个接收者对象,就相当于给机箱的按钮连上了一个连接线。
当机箱上的按钮被按下时,机箱就把这个命令通过连接线发送出去。
public interface MainBoardApi {
public void open();
}
public class GigaMainBoard implements MainBoardApi {
public void open() {
System.out.pringln("正在开机");
System.out.pringln("接通电源");
System.out.pringln("设备坚持");
System.out.pringln("装载系统");
System.out.pringln("机器正常运转");
System.out.pringln("机器已经正常打开");
}
}
public interface Command {
public void execute();
}
public class OpenCommand implement Command {
private MainBoardApi mainBoard = null;
public OpenCommand(MainBoardApi mainBoard) {
this.mainBoard = mainBoard ;
}
public void execute() {
this.mainBoard.open();
}
}
public class Box {
private Command openCommand;
public void setOpenCommand(Command openCommand) {
this.openCommand = openCommand;
}
public void openButtonPressed() {
openCommand.execute();
}
}
客户端代码:
MainBoardApi mainBoard = new GigaMainBoard();
Command openCommand = new OpenCommand(mainBoard);
Box box = new Box();
box.setOpenCommand(openCommand);
box.openButtonPressed();
可撤销操作:放弃该操作,回到未执行该操作前的状态。
1.补偿式,又称反操作式。
2.存储恢复式
宏命令就是包含多个命令的命令,是一个命令的组合。
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 379表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 491将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 341使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 277动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 295给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 301运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 433在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 399允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 417迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 537定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 308将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 410提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 383定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 331为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 370用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 566用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 307将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 417工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 951定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 426保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列请求,或者支持可撤销的操作。在Java中实现命令模式,我们可以利用面向对象编程的特性来构建系统,使得...
命令模式是一种行为设计模式,它将请求封装成独立的对象,使得可以使用不同的请求、队列请求、记录请求历史以及支持可撤销的操作。这种模式在软件工程中被广泛应用,尤其是在需要解耦请求发起者和接收者时,提高了...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得我们可以使用不同的请求、队列或者记录请求日志,还可以支持可撤销的操作。在命令模式中,我们创建表示各种操作的类以及能执行这些操作的对象。这种模式的...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在C++中,命令模式的应用可以帮助我们更好地组织代码,提高代码的可扩展性和可维护性。...
- 可扩展性:由于命令模式将请求封装为对象,可以很容易地新增或移除命令,而不影响原有系统的结构。 - 易于实现撤销/重做功能:只需额外保存命令对象,就可以实现对操作的撤销或重做。 - 松耦合:请求者与接收者...
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...
命令模式是一种行为设计模式,它将请求封装成对象,以便使用不同的请求对客户端进行参数化。该模式有助于将发送请求的对象与执行请求的对象解耦。 #### 核心概念 在命令模式中,请求以命令的形式被封装在一个对象...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在IT行业中,命令模式广泛应用于软件架构和系统设计,以提高代码...
命令模式的核心思想是将请求封装成对象,以此来达到以下目的: 1. **参数化请求**:通过创建不同的命令对象,可以根据不同的请求来执行不同的操作。 2. **队列请求**:可以将命令对象放入队列中,按照一定的顺序...
命令模式是一种行为设计模式,它的主要思想是将一个请求封装为一个对象,使得发送者可以独立于接收者来发出命令。这种模式的核心在于它能够实现请求的发送与执行的解耦,增强了系统的灵活性和可扩展性。在命令模式中...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求,以及支持可撤销的操作。这种模式在IT行业中广泛应用于构建灵活、可扩展的系统,因为它允许在...
此外,"Command模式.ppt"和"Command模式.docx"可能包含了对命令模式更深入的理论解释和示例代码,帮助学习者理解其原理和应用。 总之,Command模式通过将操作封装在独立的类中,提高了代码的可读性和可维护性,同时...
总的来说,命令模式是设计模式中的重要一环,它通过封装请求行为,使得请求发送者和接收者解耦,提高了系统的灵活性和可维护性。在C++中,利用面向对象特性,我们可以方便地实现和应用这一模式。
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使我们能支持可撤销的操作、参数化对象以及将请求排队等高级操作。在Head First的设计模式书中,命令模式被详细地讲解,帮助开发者更好地理解和应用这一...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者记录请求日志,同时支持可撤销的操作。在C++编程中,命令模式是一种非常实用的设计模式,能够帮助我们实现松耦合的系统,...
命令模式是一种行为设计模式,它将一个请求封装成一个对象,从而允许用户根据不同的请求对客户进行参数化;同时,它也支持撤销操作。 命令模式的核心在于通过命令对象实现调用操作和实现操作的解耦。这种模式通常...
通过上述例子可以看出,Command命令模式能够有效地将请求发送方与接收方解耦。这种方式不仅使得代码更加清晰,也更容易扩展和维护。例如,如果需要添加一个新的命令,只需创建一个具体的命令类即可,无需修改原有的...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列请求、或者记录请求日志。在软件工程中,命令模式的应用广泛,尤其是在处理事件驱动系统或者需要解耦调用者与被调用者时。这种...
总结来说,"命令模式.zip"包含的是关于C#中的命令模式实现,通过代码示例展示了如何利用命令模式来封装请求,解耦调用者和接收者,以及如何实现命令的撤销功能。这种模式在软件工程中广泛应用于各种场景,如GUI事件...