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

相关文章
相关标签/搜索