java設計模式之命令模式

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

  工做中領導常常會叫(命令)你去作一些事情,可是領導並不關心你怎麼作的,只須要知道你作的結果就行了。怎麼作是你本身的事情,作很差就等着加班吧(開玩笑的,通常都會說本身自願的,哈哈),作的好功勞也很差是你的,哈哈好像有點小黑暗。通常大領導會叫小領導作事情,小領導才叫小婁婁。而後功勞你懂的。很少說了,說多了都是淚。開始碼代碼。學習

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

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

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

package com.roc.command;

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

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

  須要具體的人員吧,否則怎麼體現領導的價值呢。就來一個程序員吧code

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("領導一句加班,加班中。。。。。。。。。。。");
    }

}

須要一個小領導吧,否則沒有人管理程序員呀,那就建立一個領導吧。blog

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();//寫文檔
    }

}

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

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();
    }
}

整個命令模式就是領導發命令叫你幹事情,並不用管你怎麼搞,發出一條命令,命令須要先思考,先生成命令,而後領導想到命令了,領導發命令,幹事情的是程序員。命令模式,果真有點叼呀。it

相關文章
相關標籤/搜索