设计模式之Command——电视篇(原创)

设计模式之Command——电视篇

 

每天晚上,抢电视遥控器都是我们家的保留节目。女儿喜欢看卡通屏道,老婆喜欢看电视剧屏道,我呢则喜欢看足球屏道。因此谁控制了遥控器,就等于实现了自己的节目梦想了。嘿嘿,其实每次都是我女儿成功得到,而且她还每次都阵阵有词的说:“大的应该让小的吗?”,你看这孩子,不知跟谁学的。然后遥控器就是老婆的,最后才轮到我,当我高兴的按到足球屏道时,播音员说:“今天的节目就到这里了,请明天在看!”,我倒地狂呕血。

大家都知道电视遥控器节目面板(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、说明:

ACommand说白了就是通过选择一个个命令,然后执行相应动作。

BCommand是对行为进行封装的典型模式,在本例中通过遥控器节目面板(ProgramPan)这个封装类来实现我们看电视节目的目的。

CCommand模式和Facade(外观)模式似乎比较相似。都是通过封装类来进行访问的。如何区分,对这点我也比较疑惑。
   D:Command模式是用collection的对象容器类,把另一些类放到里面,以实现集体的一块操作,以进行封装。facade模式是把某个功能的操作,集中放在一起,使之用一个统一的,对外接口,比如:封装数据库操作,发邮件操作等等。
   6、特此感谢:
   感谢changlich网友对Command模式和facade模式的区别的解释,特此将这个解释加入到说明中,希望能对大家有所帮助。再次感谢大家的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值