`
行者买刀
  • 浏览: 191293 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

设计模式之略见一斑(命令模式Command)

    博客分类:
  • J2SE
阅读更多

    终于把构造模式的几种设计模式写完,接下来开始写的行为模式。说起Command我们就要想起菜单构造方法。

 

1.菜单命令:

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

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)。

 

2.使用command模式提供服务

 假设现在有一个新需求要求我们统计方法的执行时间。假设已经有一个接口Command.

public interface Command {
   public void execute();
}

 

还有一个计算该接口执行所需要的时间的方法:

	/**
	 * the time been used on Command
	 * @param command
	 * @return
	 */
	public static long time(Command command){
		long t1 = System.currentTimeMillis();
		command.execute();
		long t2 = System.currentTimeMillis();
		return t2-t1;
	}

 

我们可以使用如下方式来测试他所花的时间,并对该接口的方法做一实现

	public static void main(String[] args) {
		Command command = new Command(){
			public void execute() {
				try {
					Thread.sleep(100);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		};
		long actual = time(command);
		System.out.println(actual);
	}

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

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

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

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

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

分享到:
评论

相关推荐

    设计模式之略见一斑(Observer观察者模式)

    NULL 博文链接:https://lgh3292.iteye.com/blog/600905

    21种设计模式略见一斑

    NULL 博文链接:https://teddywang.iteye.com/blog/769122

    循环冗余校验-概念 算法 应用

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,...例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。

    CRC16或32校验

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码...例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑

    CRC算法和实现

    例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。 差错控制理论是在代数理论基础上建立起来的。这里我们着眼于介绍CRC的算法与实现,对原理只能...

Global site tag (gtag.js) - Google Analytics