java設計模式之命令模式


   學校中、生活中、社會中總是會存在一定的階層,雖然我們很多人都不可認可階層的存在。命令這一詞也就在階層中誕生。家長命令孩子,老師命令學生,領導命令小婁婁。這些都在我們的生活存在的東西,相信這一個模式學習起來也會比較簡單的。這次我們就舉一個領導命令員工的例子來學習命令模式。

  工作中領導經常會叫(命令)你去做一些事情,但是領導並不關心你怎么做的,只需要知道你做的結果就好了。怎么做是你自己的事情,做不好就等着加班吧(開玩笑的,一般都會說自己自願的,哈哈),做的好功勞也不好是你的,哈哈好像有點小黑暗。一般大領導會叫小領導做事情,小領導才叫小婁婁。然后功勞你懂的。不多說了,說多了都是淚。開始碼代碼。

  既然是命令就要有命令呀,先定義一個命令吧。

package com.roc.command;
/**
 * 命令
 * @author liaowp
 *
 */
public abstract class Command {
    
     protected CodeWorkMan codeWorkMan=new CodeWorkMan();//定義一個程序員
    
    
     /**
      * 執行命令
      */
     public abstract void execute();
}

  還是需要一個小婁婁呢,簡稱工作人員,能寫文檔、能寫代碼、還需要能加班。

package com.roc.command;

public abstract class WorkMan {
     /**
       * 寫文檔
       */
     public abstract void writeDocument();

     /**
      * 工作
      */
     public abstract void work();
     
     /**
      * 加班
      */
     public abstract void overWork();
}

  需要具體的人員吧,不然怎么體現領導的價值呢。就來一個程序員吧

package com.roc.command;
/**
 * 程序員
 * @author liaowp
 *
 */
public class CodeWorkMan extends WorkMan{

    public void writeDocument() {
        System.out.println("寫文檔中。。。。。。。。");
    }

    public void work() {
        System.out.println("叫你上班就上班,廢話撒。。。。。。。。。");
    }

    public void overWork() {
        System.out.println("領導一句加班,加班中。。。。。。。。。。。");
    }

}

需要一個小領導吧,不然沒有人管理程序員呀,那就創建一個領導吧。

package com.roc.command;
/**
 * 小領導,一般大領導不會直接給員工下命令。
 * @author liaowp
 *
 */
public class LittleLead {
    
    private Command command;

    public Command getCommand() {
        return command;
    }

    public void setCommand(Command command) {
        this.command = command;
    }
      
    public void action(){//小領導執行命令,小領導在叫員工執行
        command.execute();
    }

}

需要具體的執行命令,不然不知道應該干嘛呢。那就來一個執行命令

package com.roc.command;
/**
 * 程序員執行命令
 * @author liaowp
 *
 */
public class CodeCommand extends Command{

    public void execute() {
        super.codeWorkMan.work();//工作
        super.codeWorkMan.overWork();//加班
        super.codeWorkMan.writeDocument();//寫文檔
    }

}

這樣好的場景需要有一個場景模擬吧,客戶端咯

package com.roc.command;
/**
 * 模擬大領導   命令模式
 * @author liaowp
 *
 */
public class Client {
     public static void main(String[] args) {//領導發命令,並不用關心你的工作,發命令就可以。具體怎么搞,你們自己搞去
         Command command=new CodeCommand();//命令
         LittleLead lead=new LittleLead(); //小領導
         lead.setCommand(command);
         lead.action();
    }
}

整個命令模式就是領導發命令叫你干事情,並不用管你怎么搞,發出一條命令,命令需要先思考,先生成命令,然后領導想到命令了,領導發命令,干事情的是程序員。命令模式,果然有點叼呀。


免責聲明!

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



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