Command模式
command模式还是很清晰明了的:
我这里想说的是order的实例是怎么从client传递到receiver的。 如果client和receiver是在一个进程里,自然无需多言。但如果这是一个分布式的系统呢?
我想一般的处理应该是用持久化,把order实例序列化成xml,当作消息从client端发送到receiver端, receiver端根据xml描述生成object实例,执行然后删掉。
这个过程我没实际做过,我现在work on的系统是这么处理的:
首先,这个系统有自己的UI和逻辑层的同步机制,UI和逻辑层是两个独立的进程,可以部署到一台机器或者不同的机器上。所有在逻辑层的对象在UI层都有自己的代理对象,无论在哪一层,如果发生了对象的创建,删除,属性的改变,底层的同步机制都会自动的把变化传递到另一层。
回到command这个例子,如果client端创建了order代理类的实例,那么在业务逻辑层也会自动创建一个order实例,所以在client端调用order代理类的实例的execute方法,同步机制会把这个动作告之逻辑层,逻辑层里的order实例也会执行自己的execute方法,这个方法里就是真正的命令逻辑了。