java 命令對象簡單學習實現:


命令模式:首先我們要知道命令模式的基本定義:來自客戶端的請求傳入一個對象,從而使你可用不同的請求對客戶進行參數化。用於“行為請求者”與“行為實現者”解耦,可實現二者之間的松耦合,以便適應變化。分離變化與不變的因素。一般可以實現命令的執行和撤銷操作。

他的基本目的:能夠實現請求者的請求行為和實際的執行者的執行行為,兩者相互獨立,松耦合,非常適合多個命令的執行實現的擴展操作。

使用命令模式基本的優勢如下:

1,大大的降低了對象之間的耦合,使得client 和 ivoker之間相互獨立。

2,新的命令,可以很容易的添加擴展到系統中,而基本不用影響原來的命令的實現操作。

3,可以十分容易的設計實現一個組合命令,譬如,遙控器上的多個按鈕的組合命令。

4,能夠實現,調用同一個方法,卻可以實現執行不同的操作,取決於命令對象的參數化。

下面用基本的小例子來簡單實現下java的命令模式:

 

基本步驟:

1、創建命令接口,接口中包含excute方法,便於所有的命令對象實現統一的操作。

2、創建實際的命令對象,實現命令接口,實現excute方法。

3、創建接受者,實際動作的操作執行者。

4、創建client客戶端,注入命令對象,根據實際注入的命令對象,執行命令方法。

 

首先,建立Command接口:

public interface Command {
    /**
     * 
     */
    void excute();
}

然后建立命令對象:開燈的命令,包含有電燈的實體引用。

public class LightOnCommand implements Command {

    private Light light;

    public LightOnCommand(Light light) {
        this.light = light;
    }

    @Override
    public void excute() {
        light.turnOn();
    }

}

緊接着,建立light對象,接收者,電燈對象,包含有開燈的實際動作。

public class LightOnCommand implements Command {

    private Light light;

    public LightOnCommand(Light light) {
        this.light = light;
    }

    @Override
    public void excute() {
        light.turnOn();
    }

}

最后,簡單,編寫client的遙控器對象,測試的main方法也包含其中,簡單測試命令模式的正常實現:

注入命令對象的接口引用,實際的注入,要看實際注入的實現類,本測試,注入的開燈的實現命令對象。

public class Remote {

    private Command command;

    public Remote(Command command) {
        this.command = command;
    }

    public void keyPress() {
        command.excute();
    }

    public static void main(String[] args) {
        Light light = new Light();
        Command command = new LightOnCommand(light);
        new Remote(command).keyPress();
    }

}

測試接口,能夠正常的開燈。簡單的實現了遙控器的開燈命令模式。而且要增加關燈操作,也十分簡單,

只要增加關燈的命令對象,在實際的命令請求時候,注入關燈的命令對象,就能簡單的實現關燈操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM