設計模式(9)-命令模式

定義

當某些操作需要多個對象多個操作協作完成,可將這些動作整合到一個命令對象.
客戶端通過命令對象完成調用,從而屏蔽的對多個對象的調用.


實例

客戶需要增加某個需求,涉及到需求分析,頁面改動,代碼改動.客戶不可能和需求人員,美工人員,開發人員多方溝通,只需要發出一條增加需求的命令即可.


1.抽象命令類

public abstract class Command {
    protected RequireGroup rg = new RequireGroup(); //需求組
    protected PageGroup pg = new PageGroup();   //頁面組
    protected CodeGroup cg = new CodeGroup();   //開發組


    protected abstract void execute();
}

2.命令實現類

public class RequireAddCommand extends Command{
    @Override
    protected void execute() {
        //利用命令實現類實現具體動作,此處可任意組合
        super.rg.add(); //新增需求
        super.pg.add(); //新增頁面
        super.cg.add(); //新增代碼
    }
}

3.各組實現類

public class RequireGroup {
    public void add(){
        System.out.println("新增需求!!!");
    }

    public void delete(){
        System.out.println("刪除需求!!!");
    }
}
public class PageGroup {
    public void add(){
        System.out.println("增加頁面!!!");
    }

    public void delete(){
        System.out.println("刪除頁面!!!");
    }
}
public class CodeGroup {
    public void add(){
        System.out.println("增加代碼!!!");
    }

    public void delelte(){
        System.out.println("刪除代碼!!!");
    }
}

4.命令接受者類

public class Invoker {
    private Command command;

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

    public void action(){
        command.execute();
    }
}

5.運行

    public static void main(String[] args) {
        Invoker invoker = new Invoker(new RequireAddCommand());
        invoker.action();
    }

結果:

新增需求!!!
增加頁面!!!
增加代碼!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章