java设计模式之命令模式
2016-07-21 20:57
489 查看
学校中、生活中、社会中总是会存在一定的阶层,虽然我们很多人都不可认可阶层的存在。命令这一词也就在阶层中诞生。家长命令孩子,老师命令学生,领导命令小娄娄。这些都在我们的生活存在的东西,相信这一个模式学习起来也会比较简单的。这次我们就举一个领导命令员工的例子来学习命令模式。
工作中领导经常会叫(命令)你去做一些事情,但是领导并不关心你怎么做的,只需要知道你做的结果就好了。怎么做是你自己的事情,做不好就等着加班吧(开玩笑的,一般都会说自己自愿的,哈哈),做的好功劳也不好是你的,哈哈好像有点小黑暗。一般大领导会叫小领导做事情,小领导才叫小娄娄。然后功劳你懂的。不多说了,说多了都是泪。开始码代码。
既然是命令就要有命令呀,先定义一个命令吧。
还是需要一个小娄娄呢,简称工作人员,能写文档、能写代码、还需要能加班。
需要具体的人员吧,不然怎么体现领导的价值呢。就来一个程序员吧
需要一个小领导吧,不然没有人管理程序员呀,那就创建一个领导吧。
需要具体的执行命令,不然不知道应该干嘛呢。那就来一个执行命令
这样好的场景需要有一个场景模拟吧,客户端咯
整个命令模式就是领导发命令叫你干事情,并不用管你怎么搞,发出一条命令,命令需要先思考,先生成命令,然后领导想到命令了,领导发命令,干事情的是程序员。命令模式,果然有点叼呀。
工作中领导经常会叫(命令)你去做一些事情,但是领导并不关心你怎么做的,只需要知道你做的结果就好了。怎么做是你自己的事情,做不好就等着加班吧(开玩笑的,一般都会说自己自愿的,哈哈),做的好功劳也不好是你的,哈哈好像有点小黑暗。一般大领导会叫小领导做事情,小领导才叫小娄娄。然后功劳你懂的。不多说了,说多了都是泪。开始码代码。
既然是命令就要有命令呀,先定义一个命令吧。
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(); } }
整个命令模式就是领导发命令叫你干事情,并不用管你怎么搞,发出一条命令,命令需要先思考,先生成命令,然后领导想到命令了,领导发命令,干事情的是程序员。命令模式,果然有点叼呀。
相关文章推荐
- Java IO操作——System类对IO的支持(System.out、System.err、System.in)
- LeetCode-JAVA-Binary Search Tree Iterator1.
- java 关于对“是否可以从一个static方法内部发出对非static方法的调用”问题的理解
- [6]访问控制权限 0X01(隐藏具体实现)
- 顺序表java实现
- SpringMVC + mybatis结合
- Java实现满天星
- Java之详解坦克大战游戏(六)
- Spring主要核心
- JAVA CAS原理深度分析
- java 从String中匹配数字,并提取数字
- java设计模式之适配器模式
- 从入门到精通:让人又爱又恨的注解(一)
- 两个大的整数的运算(java)
- 告诉你一个java对象占用的内存大小的方法
- spring配置文件中classpath路径解析
- spring、spring mvc以及IOC的阅读
- myeclipse search查找打开第二个文件时第一个文件被关闭关闭
- 链队列java实现
- Java 自带的加密类MessageDigest类(加密MD5和SHA)