zoukankan      html  css  js  c++  java
  • 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();
        }
    }

    整个命令模式就是领导发命令叫你干事情,并不用管你怎么搞,发出一条命令,命令需要先思考,先生成命令,然后领导想到命令了,领导发命令,干事情的是程序员。命令模式,果然有点叼呀。

  • 相关阅读:
    梯度下降进阶
    梯度下降基础
    python---matplotlib
    python---numpy
    浅析Jupyter Notebook
    anaconda安装
    机器学习---导学
    python---线程与进程
    mapping values are not allowed in this context at line 115 column 10
    laravel进行单元测试的时候如何模拟数据库以及mockery的调用
  • 原文地址:https://www.cnblogs.com/liaoweipeng/p/5693154.html
Copyright © 2011-2022 走看看