`
jsczxy2
  • 浏览: 1275403 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

学习设计模式之Command模式(命令模式)

阅读更多

引用某大的文章:

我们常见的一种情况就是菜单命令,按钮监听。下面就举出一个常用的简单例子 :

public class Test {
   public static void main(String[] args) {
	JButton jb = new JButton();
	jb.addActionListener(new ActionListener(){

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			doSomething();
		}
		
	});
}
}
 

设计JButton的时候我们没办法决定用户调用什么方法,什么时候调用, 所以我们提供一个外接口来响应用户的请求,并把具体响应内容对外给用户由用户决定响应内容。如上代码,当用户点击按钮时,调用的方法的 actionPerformed(),当你创建该按钮方法时,可以使用对应于特定命令行为的actionPerformed()方法。给它绑定一个监听对 象(ActionListener)。

下面使用一个简单的例子,比如网游中需要切换武器迎敌,那么例子如下:

1.interface Weapon

package com.xuyi.command;


/**
 * @author xuyi
 * 切换武器
 */
public interface Weapon {
	public String switchWeapon();
}
 

 2.Test.java

package com.xuyi.command;

//command模式-命令模式:使用command模式提供服务,最典型的例子就是按钮侦听事件
public class Test {
	private static void kill(Weapon weapon){
		System.out.println(weapon.switchWeapon());
	}
	
	private static String doSomeThing(){
		return "武器切换成圆月弯刀";
	}
	
	public static void main(String[] args) {
		//先实现接口
		Weapon weapon = new Weapon(){
			public String switchWeapon() {
				return doSomeThing();
			}
		};
		//进行侦听这个接口的实现,doSomeThing实现可以任意指定
		kill(weapon);
		
	}
	
}

 3.Command模式与其他模式关系

    1).Command模式与解释器模式类似

    2).Comsmand模式也类似于Factory模式,在Factory中用户不知道何时创建对象,也不知道该实例化哪一个类。

    3).Command模式也经常与其它模式一起使用如上面提的actionListener,我们通常都是类先实现这个接口,然后再

addActionListener(this)。或者把当前的actionPerformed()用另一个类封装.

分享到:
评论

相关推荐

    设计模式之Command(命令)模式

    此外,"Command模式.ppt"和"Command模式.docx"可能包含了对命令模式更深入的理论解释和示例代码,帮助学习者理解其原理和应用。 总之,Command模式通过将操作封装在独立的类中,提高了代码的可读性和可维护性,同时...

    设计模式之命令模式(Command Pattern)

    命令模式是一种行为设计模式,它将请求封装成独立的对象,使得可以使用不同的请求、队列请求、记录请求历史以及支持可撤销的操作。这种模式在软件工程中被广泛应用,尤其是在需要解耦请求发起者和接收者时,提高了...

    设计模式C++学习之命令模式(Command)

    命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在C++中,命令模式的应用可以帮助我们更好地组织代码,提高代码的可扩展性和可维护性。...

    设计模式之命令模式(Command)

    命令模式是一种行为设计模式,它的主要目的是将请求者与接收者解耦,使得请求的发起者无需知道哪个对象会执行这个请求,同时也让系统更容易扩展。这种模式在软件工程中广泛应用,特别是在事件驱动和分布式系统中。 ...

    设计模式-command

    命令模式是一种行为设计模式,它的主要目的是将命令的发送者与接收者解耦。在“设计模式-command”中,我们看到这个模式的应用,通过将一个操作封装为一个对象(即命令对象),使得发送者可以无需知道接收者的具体...

    c++-设计模式之命令模式(Command Pattern)

    命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...

    命令模式(Command模式)

    **命令模式(Command模式)详解** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得我们可以使用不同的请求、队列或者记录请求日志,还可以支持可撤销的操作。在命令模式中,我们创建表示各种操作的类...

    设计模式之Command模式和代码实现

    Command模式是一种行为设计模式,它的主要目的是将命令的发起者(Invoker)与命令的执行者(Receiver)解耦。在Command模式中,一个命令对象封装了特定的请求,调用者(Invoker)只需要知道如何发送命令,而无需知道...

    (行为型模式) Command 命令模式

    ### (行为型模式) Command 命令模式 #### 概述 在软件工程领域,设计模式被广泛地应用于解决常见的编程难题。其中,“Command”(命令)模式是一种行为型设计模式,它允许将请求封装成对象,从而使你能够用不同的...

    Head First 设计模式 (六) 命令模式(Command pattern) C++实现

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Head First 设计模式这本书中,第六章详细介绍了如何在C++中...

    C++设计模式代码资源23_Command_命令模式.zip

    **C++设计模式:命令模式** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者记录请求日志,同时支持可撤销的操作。在C++编程中,命令模式是一种非常实用的设计模式,能够...

    设计模式之命令模式

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于解耦发出命令的对象和执行命令的...

    设计模式学习之Command模式共8页.pdf.zip

    具体到“设计模式学习之Command模式”的学习资料,8页的PDF可能涵盖了Command模式的基本概念、结构、使用示例以及与其他设计模式的比较等内容。学习这部分资料,读者可以深入理解Command模式的原理,并学会如何在...

    [行为模式] head first 设计模式之命令模式(Command)

    【行为模式】Head First 设计模式之命令模式(Command) 命令模式是一种行为设计模式,它将请求封装为一个对象,从而使我们能支持可撤销的操作、参数化对象以及将请求排队等高级操作。在Head First的设计模式书中,...

    设计模式之美—学习笔记

    命令模式(Command)将请求封装为一个对象,以便使用不同的请求、队列请求或支持撤销操作。 此外,还有一些其他的重要模式,如观察者模式(Observer),它定义了对象间的一对多依赖关系,当一个对象的状态发生改变...

    设计模式之Command

    Command模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java编程中,这种模式常用于解耦调用者和接收者,使得系统...

    设计模式之命令模式案例代码

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本文中,我们将深入探讨命令模式的原理、结构和实际应用,并...

    命令模式_Command

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在IT行业中,命令模式广泛应用于软件架构和系统设计,以提高代码...

Global site tag (gtag.js) - Google Analytics