編輯:關於Android編程
本文地址: http://blog.csdn.net/caroline_wendy
命令模式(command pattern) : 將請求封裝成對象, 以便使用不同的請求\隊列\日志來參數化其他對象.
命令模式也可以支持撤銷操作.
簡單的命令模式的實現:
1. 具體的類, 每一個類都有特定的方法:
/** * @time 2014年6月9日 */ package command; /** * @author C.L.Wang * */ public class Light { public Light() {} public void on() { System.out.println("Light is on"); } public void off() { System.out.println("Light is off"); } } /** * @time 2014年6月9日 */ package command; /** * @author C.L.Wang * */ public class GarageDoor { public GarageDoor() {} public void up() { System.out.println("Garage Door is Open"); } public void down() { System.out.println("Garage Door is Closed"); } public void stop() { System.out.println("Garage Door is Stopped"); } public void lightOn() { System.out.println("Garage light is on"); } public void lightOff() { System.out.println("Garage light is off"); } }
2. 命令接口, 提供所有命令的接口, 具體命令繼承接口, 並實現方法:
/** * @time 2014年6月9日 */ package command; /** * @author C.L.Wang * */ public interface Command { public void execute(); }
/** * @time 2014年6月9日 */ package command; /** * @author C.L.Wang * */ public class LightOnCommand implements Command { Light light; public LightOnCommand (Light light) { this.light = light; } /* (non-Javadoc) * @see command.Command#execute() */ @Override public void execute() { // TODO Auto-generated method stub light.on(); } } /** * @time 2014年6月9日 */ package command; /** * @author C.L.Wang * */ public class GarageDoorOpenCommand implements Command { GarageDoor garageDoor; public GarageDoorOpenCommand (GarageDoor garageDoor) { this.garageDoor = garageDoor; } /* (non-Javadoc) * @see command.Command#execute() */ @Override public void execute() { // TODO Auto-generated method stub garageDoor.up(); } }
/** * @time 2014年6月9日 */ package command; /** * @author C.L.Wang * */ public class SimpleRemoteControl { Command slot; public SimpleRemoteControl() {} public void setCommand(Command command) { this.slot = command; } public void buttonWasPressed() { slot.execute(); } }
/** * @time 2014年6月9日 */ package command; /** * @author C.L.Wang * */ public class RemoteControlTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SimpleRemoteControl remote = new SimpleRemoteControl(); Light light = new Light(); GarageDoor garageDoor = new GarageDoor(); LightOnCommand lightOn = new LightOnCommand(light); GarageDoorOpenCommand garageOpen = new GarageDoorOpenCommand(garageDoor); remote.setCommand(lightOn); remote.buttonWasPressed(); remote.setCommand(garageOpen); remote.buttonWasPressed(); } }
Light is on Garage Door is Open
作為一個成熟的應用, 必須要有廣告. 那麼, 如何優雅地開發廣告呢? 需要注意一些細節.本文提供一個簡單的示例, 代碼僅供參考.需求:1. 下載廣告在歡迎頁面中, 啟動一
一、前言Android 中解決滑動的方案有2種:外部攔截法 和內部攔截法。滑動沖突也存在2種場景: 橫豎滑動沖突、同向滑動沖突。所以我就寫了4個例子來學習如何解決滑動沖突
很多用戶不知道,其實在隨著用戶使用微信的時間推移,微信應用會產生大量的緩存文件,這樣久而久之會造成手機內存不足的問題,並且在手機運行速度方面也有所影響,故此
從1月份Google發布的16個關於性能優化的系列視頻起,這段時間在各大社區都有看到很多優秀的關於優化系列的文章。有分析了性能產生的原因、有分享如何優化我們的應用、有介紹