設計模式之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、說明:
A:Command說白了就是通過選擇一個個命令,然后執行相應動作。
B:Command是對行為進行封裝的典型模式,在本例中通過遙控器節目面板(ProgramPan)這個封裝類來實現我們看電視節目的目的。
C:Command模式和Facade(外觀)模式似乎比較相似。都是通過封裝類來進行訪問的。如何區分,對這點我也比較疑惑。
posted on 2008-02-27 09:21 java flex 結合 閱讀(709) 評論(0) 編輯 收藏 所屬分類: pattern