大家都知道电视遥控器节目面板(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(外观)模式似乎比较相似。都是通过封装类来进行访问的。如何区分,对这点我也比较疑惑。
设计模式之Command——电视篇
最新推荐文章于 2025-08-12 13:13:31 发布