gef之一----command模式
来源:互联网 发布:淘宝扣子 编辑:程序博客网 时间:2024/06/05 11:19
最近开始学习gef,今天看到这种设计模式.
***Invoker.java
import java.util.*;
public class Invoker {
private Map commands;
public Invoker() {
commands = new HashMap();
}
public void addCommand(String commName, ICommand command) {
commands.put(commName, command);
}
public void request(String commName) {
ICommand command = (ICommand) commands.get(commName);
command.execute();
}
}
*****ICommand.java
public interface ICommand {
public void execute();
}
*****UpperCaseHello.java
public class UpperCaseHello implements ICommand {
private String name;
public UpperCaseHello(String name) {
this.name = name;
}
public void execute() {
System.out.println("HELLO, " + name.toUpperCase());
}
}
****LowerCaseHello.java
public class LowerCaseHello implements ICommand {
private String name;
public LowerCaseHello(String name) {
this.name = name;
}
public void execute() {
System.out.println("hello, " + name.toLowerCase());
}
}
Client模擬隨機的請求,Invoker事先並不知道Client會發出什麼需求,但它總是可以執行Client的請求:
******Client.java
public class Client {
public static void main(String[] args) {
//创建一个装载类
Invoker invoker = new Invoker();
//将两种模式装载进来
invoker.addCommand("JUSTIN",new UpperCaseHello("Justin"));
invoker.addCommand("momor",new LowerCaseHello("momor"));
//通过装载时设置的key值进行调用相应的函数,使用了多态
// simulate random request
String[] req = {"JUSTIN", "momor"};
while(true) {
int i = (int) (Math.random() * 10) % 2;
//一直使用Revoker类进行外部的调用
invoker.request(req[i]);
}
}
}
总的来说:
1 建立了一个外部交互类 负责加载(应用hashMap)和调用(利用多态)
2 对于要调用的各种类采用了多态集中到一个借口管理
- gef之一----command模式
- [GEF循序渐进系列之一]GEF是什么
- GEF中命令模式
- GEF-自定义Request、Command与Action
- GEF 框架中的设计模式
- GEF 框架中的设计模式
- GEF框架分析之一(转载)
- gef
- GEF框架中的设计模型(观察者模式)
- GEF框架中的设计模型(命令模式)
- Command模式
- Command模式
- Command模式
- Command 模式
- Command 模式
- Command模式
- command模式
- Command模式
- SHELL电子书
- 话说"字号" -- "pt px in cm"关系深入挖掘
- 计算机操作系统
- Java Reflection 之 Method
- 程序设计经验总结
- gef之一----command模式
- (转贴)什么是socket
- Event和全局类
- VC中易犯的错误
- install linux as 5 in dell poweredge 2950
- ubuntu 下的boot 目录
- about seo
- IIS与Apache共用80端口方法
- Linux下mysql整个数据库的备份和还原