18.command
18.command 【程序编程相关:工作是我们要用生命去做的事】
19.bridge 【推荐阅读:构架师之路】
command定义 【扩展信息:我的内容管理系统(CMS)寻找历程 --】
说明:command模式在java菜单中使用的很多,非常好的一种模式,大家也经常会使用到,下面的java代码非常清楚,我就不废话了.将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节.这是一种两台机器之间通讯联系性质的模式,类似传统过程语 言的 callback功能.
优点:
解除了发送者与接受者之间联系. 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用command模式解耦,发送者无需知道接受者任何接口.不少command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作.
将这些命令封装成在一个类中,然后用户(调用者)再对这个类进行操作,这就是command模式,换句话说,本来用户(调用者)是直接调用这些命令的,如菜单上打开文档(调用者),就直接指向打开文档的代码,使用command模式,就是在这两者之间增加一个中间者,将这种直接关系拗断,同时两者之间都隔离,基本没有关系了.
显然这样做的好处是符合封装的特性,降低耦合度,command是将对行为进行封装的典型模式,factory是将创建进行封装的模式,
从command模式,我也发现设计模式一个"通病":好象喜欢将简单的问题复杂化, 喜欢在不同类中增加第三者,当然这样做有利于代码的健壮性 可维护性 还有复用性.实例:
具体的command模式代码各式各样,因为如何封装命令,不同系统,有不同的做法.下面事例是将命令封装在一个collection的list中,任何对象一旦加入list中,实际上装入了一个封闭的黑盒中,对象的特性消失了,只有取出时,才有可能模糊的分辨出:典型的command模式需要有一个接口.接口中有一个统一的方法,这就是"将命令/请求封装为对象":
public interface command { public abstract void execute ( );}具体不同命令/请求代码是实现接口command,下面有三个具体命令
public class engineer implements command {public void execute( ) {
//do engineer´s command }} public class programmer implements command {public void execute( ) {
//do programmer´s command }}public class politician implements command {
... 下一页