`
xieyaxiong
  • 浏览: 41117 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

design pattern——命令模式

 
阅读更多

 

针对问题:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式。在命令模式上可以看到观察者模块和代理模块的影子,事实上就是两者的结合。

 

 

 

 

 

 

 

命令模式结构图:


 

 

 

 

 

 

命令模式实现代码:

 

 

/**
 * 命令接口
 * @author bruce
 *
 */
public interface Command {
	
	public void execute();

}




/**
 * 行为类
 * @author bruce
 *
 */
public class Receiver {
	
	public void action(){
		System.out.println("really doing something");
	}

}




/**
 * 命令实现类
 * @author bruce
 *
 */
public class ConcreteCommand implements Command{
	
	private Receiver receiver; //组合行为对象
	
	public ConcreteCommand(Receiver receiver){
		this.receiver=receiver;
	}

	public void execute() {
		// TODO Auto-generated method stub
		System.out.println("start");
		receiver.action();
	}
}





/**
 * 调用者对象
 * @author bruce
 *
 */
public class Invoker {
	
	private Command command;
	
	public void setCommand(Command command){
		this.command=command;
	}

	public void runCommand(){
		if(command==null)return;
		command.execute();
	}
	
}






/**
 * 测试
 * @author bruce
 *
 */

public class Client {
	
	public static void main(String[] args) {
		Receiver receiver=new Receiver();
		Command command=new ConcreteCommand(receiver);
		
		Invoker invoker=new Invoker();
		invoker.setCommand(command);
		invoker.runCommand();
		
		/**
		 * output://
		   start
		   really doing something
		 */
	}

}

 

 

  • 大小: 6.3 KB
分享到:
评论

相关推荐

    design-pattern-java.pdf

    命令模式-Command Pattern 请求发送者与接收者解耦——命令模式(一) 请求发送者与接收者解耦——命令模式(二) 请求发送者与接收者解耦——命令模式(三) 请求发送者与接收者解耦——命令模式(四) 请求发送者...

    GoF的经典著作设计模式(Design Pattern)

    13. **命令模式**:将请求封装为一个对象,以便使用不同的请求、队列请求、记录请求日志,或者支持可撤销的操作。 14. **责任链模式**:处理请求的对象形成一条链,请求沿链传递,直到某个对象处理。这样可以避免...

    模式举例代码——设计模式和举例代码

    - 命令模式:将命令封装为对象,以便使用不同的请求、队列或日志来参数化其他对象。 - 解释器模式:定义语言的文法,并提供一个解释器来处理这种语言。 - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又...

    Design Pattern FrameworkTM

    为了帮助 .NET 开发者更好地理解和应用这些设计模式,《Head First 设计模式》为 .NET 2.0 特别推出了一个配套文档——《设计模式框架》(Design Pattern FrameworkTM),该文档涵盖了原书中介绍的所有设计模式,并...

    HeadFirst Design Pattern

    3. 行为型模式:这类模式主要关注对象间的交互和责任分配,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、备忘录模式(Memento...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    通过阅读GOF23种设计模式.docx文档和探索DesignPattern项目中的代码,你可以深入理解每种模式的用途、优点以及如何在C#和.NET Core环境中实现它们。对于想要提升编程技能和代码质量的开发者来说,这是一个宝贵的资源...

    design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip

    - 命令模式:将请求封装为一个对象,以便使用不同的请求、队列请求或者记录请求日志。 - 解释器模式:为特定语言提供解析结构。 - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - ...

    Design Pattern

    - 命令模式(Command):将请求封装为一个对象,以便使用不同的请求、队列请求、记录请求日志,以及支持可撤销的操作。 - 解释器模式(Interpreter):给定一种语言,定义它的文法表示,并提供一个解释器来处理...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    **设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式进行深入探讨。 #### 二、设计模式的基本定义 ...

    设计模式 Head First

    #### 第6章:封装调用——命令模式 命令模式将请求封装成对象,从而使得使用不同的请求、队列或者日志记录请求变得可能。这一模式非常适合处理事务性的操作,因为它可以将调用者的职责与具体的执行操作解耦开来,...

    gof设计模式中英双语版

    3. 行为型模式:这类模式主要关注对象间如何交互和分配责任,例如责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式...

    Head First Design Patterns

    - **行为型模式**:包括策略模式、模板方法模式、观察者模式、迭代器模式、访问者模式、命令模式、备忘录模式、状态模式、解释器模式等。这些模式侧重于对象间的交互方式。 #### 五、结语 《Head First Design ...

    设计模式 高清 完整版

    - **行为型模式**:关注对象间的职责分配,如策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、中介者模式、备忘录模式、状态模式、访问者模式和解释器模式。 #### 设计模式的价值 设计模式的价值不仅...

    Pro Design Patterns in Swift copy

    - **命令模式**:将一个请求封装为一个对象,从而使用户可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 - **中介者模式**:用一个中介对象来封装一系列的对象交互,同事...

Global site tag (gtag.js) - Google Analytics