当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 18.command 19.bridge 18.Command说明:Command模式在java菜单中使用的很多,非常好的一种模式,大家也经常会使用到,下面的JAVA代码非常清楚,我就不废话了。
 

 

    摘要:peeking inside the box: attribute-oriented programming with java 1.5 in the previous article in this series, "peeking inside the box, part 1," i introduced the concepts of attribute-oriente......
 ·文档收藏助手1.0发布测试。    »显示摘要«
    摘要:软件有点大,因为我把.net framework 1.1打在压缩包里了 安装的时候先检测有无安装1.1,如果没有装则先安装1.1,安装完后再执行一次setup.exe 只是一次试验,欢迎批评 下载地址:http://www.chooso.com/docfavoritesetup.rar 大小:30m左右(包括framework 1.1) ......


设计模式学习笔记(5)

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 {


...   下一页
 ·stl sort算法之研究    »显示摘要«
    摘要:sort模板有两种:---------------------------------------------------------------------template<class ranit> void sort(ranit fist, ranit last);template<class ranit, class pred> void sort(ranit fis......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE