监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 签约案例 | 购买价格 | 在线试用 | 手机APP | 产品资料
X 关闭

命令设计模式

申请免费试用、咨询电话:400-8352-114

  考虑这样一个需求:某个方法需要完成一个功能,完成这个功能的大部分步骤已经确定下来了,但是有少量步骤的具体实施目前无法确定下来,必须要等到执行该方法时才可以确定。这个方法不仅要求参数可变,甚至要求方法执行体中的代码可变。对于这样的要求,我们必须把方法体的处理行为作为参数传进该方法,而处理行为用编程序来实现就是一段代码块。这种需求在设计模式中就叫做“命令模式”,在Swing和GWT之中有广泛的使用(例如:事件处理使用的匿名内部类)。下面就是一个命令设计模式的实现例子:

1.

package com.lanp.command;

/**
 * 处理数据数据项的借口
 * @author LanP
 * @version V1.0
 */
public interface MyCommand {

 void process(int[] target);

}

 

2.

package com.lanp.command;

/**
 * 处理数据数据内容的处理类
 * @author LanP
 * @version V1.0
 */
public class DoArray {
 public void doArrayItems(int[] target,MyCommand myCmd) {
  myCmd.process(target);
 }
}

 

3.

package com.lanp.command;

/**
 * 用于测试命令模式的类
 * @author LanP
 * @version V1.0
 */
public class TestMyCommand {

 public static void main(String[] args) {
  DoArray doArray = new DoArray();
  int[] target = {1,-50,78,-2,9,88,520};
  //第一次对数组进行处理,具体怎么样处理取决于MyCommand对象
  System.out.println("----第一次对数组进行处理----");
  doArray.doArrayItems(target, new MyCommand() {

   @Override
   public void process(int[] target) {
    //遍历输出数据元素
    System.out.print("数组中的元素有: ");
    for(int temp : target) {
     System.out.print(temp + " ");
    }
    System.out.println();
   }
   
  });
  
  //第二次对数组进行处理,具体怎么样处理取决于MyCommand对象
  System.out.println("----第二次对数组进行处理----");
  doArray.doArrayItems(target, new MyCommand() {
   //计算数组元素中的和
   @Override
   public void process(int[] target) {
    int sum = 0;
    for(int temp  : target) {
     sum = sum + temp;
    }
    System.out.println("数组中的和为: " + sum);
   }
   
  });
 }

}




发布:2007-04-16 17:22    编辑:泛普软件 · xiaona    [打印此页]    [关闭]

泛普入库出库管理软件其他应用

药品进销存管理系统 医药进销存 超市进销存管理系统 服装进销存软件 仓库进销存管理软件 进销存财务软件 傻瓜进销存 万能进销存软件 进销存网络版 进销存管理系统 进销存系统 服装库存管理软件 条码仓库管理软件 库存管理软件 仓库管理软件 库房管理软件 出入库管理软件 仓储管理系统 仓库管理系统 库存管理系统 入库出库管理软件 进销存软件排名 仓库管理软件哪个好

在线咨询
郑义
张悦
何云
技术咨询
请您留言

给泛普软件留言吧在线咨询微信号:fanpurj1

提交