┆ 回首页
 
站内资源搜索:
┆ 将本文寄给朋友  

设计模式之Command——电视篇

 

 

下载源代码


〖 作者:GaryFeng 〗〖 大小:20k 〗〖 发布日期:2006-04-07 〗〖 浏览:675 〗

 

八、设计模式之Command——电视篇
                                                                                        
    每天晚上,抢电视遥控器都是我们家的保留节目。女儿喜欢看卡通屏道,老婆喜欢看电视剧屏道,我呢则喜欢看足球屏道。

    因此谁控制了遥控器,就等于实现了自己的节目梦想了。嘿嘿,其实每次都是我女儿成功得到,而且她还每次都阵阵有词的说:
"大的应该让小的吗?",你看这孩子,不知跟谁学的。然后遥控器就是老婆的,最后才轮到我,当我高兴的按到足球屏道时,
播音员说:"今天的节目就到这里了,请明天再看!",我倒地狂呕血i 不止。

     大家都知道电视遥控器节目面板(ProgramPan)是由节目按钮组成,通过选择相应的节目按钮,就可以切换到相应的节目屏道。 下来让我们看看如何实现通过遥控器按钮选择节目屏道的过程吧。
1、在这里,先定义遥控器按钮(RemoteControlButton)接口:
public interface RemoteControlButton { public abstract void selectProgram(); //选择节目屏道 }
2、再定义遥控器按钮(RemoteControlButton)接口的实现类:
A:卡通节目按钮(CartonProgramButton)类: public class CartonProgramButton implements RemoteControlButton{ public void selectProgram() { System.out.println("选择了卡通屏道!"); } }
B:电视剧节目按钮(TvPlanProgramButton)类: public class TvPlanProgramButton implements RemoteControlButton { public void selectProgram() { System.out.println("选择了电视剧屏道!"); } } C:足球节目按钮(FootProgramButton)类: public class FootProgramButton implements RemoteControlButton { public void selectProgram() { System.out.println("选择了足球屏道!"); } } 3、遥控器节目面板(ProgramPan)类:用来控制节目按钮,显示节目 public class ProgramPan { public static List programList() { List list = new ArrayList(); //节目屏道按钮列表 list.add(new CartonProgramButton()); //卡通屏道按钮 list.add(new TvPlanProgramButton()); //电视剧屏道按钮 list.add(new FootProgramButton()); //足球屏道按钮 return list; } }
4、编写测试类: public class TestCommand { public static void main(String[] args) { List list = ProgramPan.programList(); //获得节目屏道按钮 for (Iterator it = list.iterator();it.hasNext();) ( (RemoteControlButton) it.next()).selectProgram(); //选择节目屏道中对应的节目 } }
运行: 选择了卡通屏道!
选择了电视剧屏道!
选择了足球屏道! 5、说明: A:Command说白了就是通过选择一个个命令,然后执行相应动作。 B:Command是对行为进行封装的典型模式,在本例中通过遥控器节目面板(ProgramPan)这个封装类来实现我们看电视节目的目的。 C:Command模式和Facade(外观)模式似乎比较相似。都是通过封装类来进行访问的。如何区分,对这点我也比较疑惑。 D:Command模式是用collection的对象容器类,把另一些类放到里面,以实现集体的一块操作,以进行封装。facade模式是把某个
功能的操作,集中放在一起,使之用一个统一的,对外接口,比如:封装数据库操作,发邮件操作等等。 6、特此感谢: 感谢changlich网友对Command模式和facade模式的区别的解释,特此将这个解释加入到说明中,希望能对大家有所帮助。再次感谢
大家的支持。

来源: http://garyfeng.blogchina.com/index.html


 严禁发表涉及封建迷信、国家政治等敏感问题的内容
 ■ 对本文的评价(带 * 为必填内容,400字以内)    严禁发表涉及封建迷信、国家政治等敏感问题的内容。

* 您的姓名 
您的电子邮件 
您的个人主页 

*
您的评价 

     

 ■ 以往的评价







以上文章版权由原作者所有。未经同意,不得将其任何一部分复制、转载、发布等未授权操作。


Java学习室 — 陈伟波个人主页
E-mail: zz3zcwb@sina.com
COPY RIGHT 2005