稳固而知新 Command,Active Object,Composite
来源:互联网 发布:js隐藏jsp页面内容 编辑:程序博客网 时间:2024/05/20 18:02
COMMAND
Command 模式非常简单,只有一个具有唯一方法的接口组成。
public interface ICommand {
public void execute();
}
1 一般的Command模式
CommandMaster中绑定要执行的Command,只要Command监测到一个事件,它只要调用相应的Command执行即可,它无需指导要做什么事情。
public class CommandMaster {
Map
public void init() {
map.put("alarm", new AlarmCommand());
map.put("autobackup", new AutoBackupCommand());
}
public void execute(String key) {
ICommand c = map.get(key);
if (c != null) {
c.execute();
}
}
}
2 事务操作
接口ITransaction中,validate进行验证工作,execute是要执行的任务。在CreateEmsUserTransaction中,先用validate方法进行输入数据的有效性验证,验证其是否符合创建EMS User的条件,验证通过后,利用execute方法创建EMSUser.
优点:
1 把验证和执行的代码分离到CreateEmsUserTransaction类中,从实体上解除了该代码和获取数据的接口之间的耦合。
2 可以把通过验证的事务存在一起,在某个特定的时间统一执行,例如: 某数据库只有零点以后可以更新。
3 支持UNDO操作
public interface ICommand {
public void do(); //这个名字在java里面用不了
public void undo();
}
undo的代码几乎与do的代码一致,这样就可以很容易的实现某个操作的undo功能。
ACTIVE OBJECT
该模式使用Command模式来为系统提供一个简单的多任务核心。
public class ActiveObject {
private LinkedList
public void add(ICommand command) {
commands.add(command);
}
public void run() {
while (!commands.isEmpty()) {
ICommand cmd = commands.getFirst();
commands.removeFirst();
cmd.execute();
}
}
}
cmd.execute()中可以将其他的需要执行的ICommand放入commands中,这样run会一直执行下去。
当然也可以在ActiveObject加入多进程机制,是加入的Command自动执行。
COMPOSITE
在Command模式中,如果某个操作需要的不是一个Command,而是一组Command的执行结果,这时,就要维护一组Command的列表,需要更改CommandMaster的add()方法和run()方法,而且不利于后期的维护工作。这是可以使用Composite模式,使CommandMaster以对待一个Command的方式去对待一组Command.
public class CompositeCommand implements ICommand {
private List
public void execute() {
for (ICommand command : commands) {
command.execute();
}
}
public void add(ICommand command) {
commands.add(command);
}
}
对系统来说,CompositeCommand就像一个单一的Command,它表现的就像一个Command,只不过它是一组Command的代理。
使用Composite模式可以使系统一对多关系转化为一对一关系,可以更有利于理解和维护。但它并不能使得所有的一对多关系都转化为一对一,只有以一致的方式对待列表中的每一个对象的情况下才可以使用。- 稳固而知新 Command,Active Object,Composite
- 稳固而知新 Command,Active Object,Composite
- 稳固而知新 Command,Active Object,Composite
- 稳固而知新 Command,Active Object,Composite
- 稳固而知新 Command,Active Object,Composite
- 稳固而知新 SINGLETON,MONOSTATE,NULL OBJECT
- 稳固而知新 SINGLETON,MONOSTATE,NULL OBJECT
- 稳固而知新 SINGLETON,MONOSTATE,NULL OBJECT
- 稳固而知新 SINGLETON,MONOSTATE,NULL OBJECT
- 稳固而知新 SINGLETON,MONOSTATE,NULL OBJECT
- 稳固而知新_FACTORY
- 稳固而知新 Observer
- 稳固而知新 Observer
- 稳固而知新_FACTORY
- 稳固而知新 Observer
- 稳固而知新_FACTORY
- 稳固而知新_FACTORY
- 稳固而知新 Observer
- 稳固而知新 Observer
- 稳固而知新 Template Method,Strategy
- 快速构建axis应用
- 稳固而知新 FACADE,MEDIATOR
- 稳固而知新 ABSTRACT SERVER,ADAPTER
- 稳固而知新 Command,Active Object,Composite
- 稳固而知新 SINGLETON,MONOSTATE,NULL OBJECT
- 稳固而知新_FACTORY
- 关于Fielding博士论文导读
- Fielding博士论文导读----第5章
- Fielding博士论文导读----第4章
- Fielding博士论文导读----第3章
- Fielding博士论文导读----第2章
- Fielding博士论文导读----第1章