澶у閮界煡閬?/span>鐢佃閬ユ帶鍣ㄨ妭鐩潰鏉匡紙ProgramPan錛夋槸鐢辮妭鐩寜閽粍鎴愶紝閫氳繃閫夋嫨鐩稿簲鐨勮妭鐩寜閽紝灝卞彲浠ュ垏鎹㈠埌鐩稿簲鐨勮妭鐩睆閬撱?/span>
涓嬫潵璁╂垜浠湅鐪嬪浣曞疄鐜伴氳繃閬ユ帶鍣ㄦ寜閽夋嫨鑺傜洰灞忛亾鐨勮繃紼嬪惂銆?/font>
1銆佸湪榪欓噷錛屽厛瀹氫箟閬ユ帶鍣ㄦ寜閽紙RemoteControlButton錛夋帴鍙o細
public interface RemoteControlButton {
public abstract void selectProgram(); //閫夋嫨鑺傜洰灞忛亾
}
2銆佸啀瀹氫箟閬ユ帶鍣ㄦ寜閽紙RemoteControlButton錛夋帴鍙g殑瀹炵幇綾伙細
A錛氬崱閫氳妭鐩寜閽紙CartonProgramButton錛夌被錛?/span>
public class CartonProgramButton implements RemoteControlButton{
public void selectProgram() {
System.out.println("閫夋嫨浜嗗崱閫氬睆閬擄紒");
}
}
B錛氱數瑙嗗墽鑺傜洰鎸夐挳錛?/span>TvPlanProgramButton錛夌被錛?/span>
public class TvPlanProgramButton implements RemoteControlButton {
public void selectProgram() {
System.out.println("閫夋嫨浜嗙數瑙嗗墽灞忛亾錛?/span>");
}
}
C錛氳凍鐞冭妭鐩寜閽紙FootProgramButton錛夌被錛?/span>
public class FootProgramButton implements RemoteControlButton {
public void selectProgram() {
System.out.println("閫夋嫨浜嗚凍鐞冨睆閬擄紒");
}
}
3銆侀仴鎺у櫒鑺傜洰闈㈡澘錛?/span>ProgramPan錛夌被錛氱敤鏉ユ帶鍒惰妭鐩寜閽紝鏄劇ず鑺傜洰
public class ProgramPan {
public static List programList() {
List list = new ArrayList(); //鑺傜洰灞忛亾鎸夐挳鍒楄〃
list.add(new CartonProgramButton()); //鍗¢氬睆閬撴寜閽?/span>
list.add(new TvPlanProgramButton()); //鐢佃鍓у睆閬撴寜閽?/span>
list.add(new FootProgramButton()); //瓚崇悆灞忛亾鎸夐挳
return list;
}
}
4銆佺紪鍐欐祴璇曠被錛?/span>
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錛?/span>Command璇寸櫧浜嗗氨鏄氳繃閫夋嫨涓涓釜鍛戒護錛岀劧鍚庢墽琛岀浉搴斿姩浣溿?/span>
B錛?/span>Command鏄琛屼負榪涜灝佽鐨勫吀鍨嬫ā寮忥紝鍦ㄦ湰渚嬩腑閫氳繃閬ユ帶鍣ㄨ妭鐩潰鏉匡紙ProgramPan錛夎繖涓皝瑁呯被鏉ュ疄鐜版垜浠湅鐢佃鑺傜洰鐨勭洰鐨勩?/span>
C錛?/span>Command妯″紡鍜?/span>Facade(澶栬)妯″紡浼間箮姣旇緝鐩鎬技銆傞兘鏄氳繃灝佽綾繪潵榪涜璁塊棶鐨勩傚浣曞尯鍒嗭紝瀵硅繖鐐規垜涔熸瘮杈冪枒鎯戙?/span>