设计模式之命令模式,设计模式命令,参考:设计模式之禅部分代
分享于 点击 8302 次 点评:86
设计模式之命令模式,设计模式命令,参考:设计模式之禅部分代
参考:设计模式之禅部分代码。
package com.hegd.pattern.command;public class Client { public static void main(String[] args) { /* //首先客户找到美工组说,过来谈页面,并修改 System.out.println("-------------客户要求删除一个页面-----------------"); Group pg = new PageGroup(); //找到需求组 pg.find(); //增加一个需求 pg.delete(); //要求变更计划 pg.plan(); */ //定义我们的接头人 Invoker xiaoSan = new Invoker(); //接头人就是我小三 //客户要求增加一项需求 System.out.println("-------------客户要求增加一项需求-----------------"); //客户给我们下命令来 Command command = new AddRequirementCommand(); //接头人接收到命令 xiaoSan.setCommand(command); //接头人执行命令 xiaoSan.action(); } }
Command.java
package com.hegd.pattern.command;public abstract class Command { //把三个组都定义好,子类可以直接使用 protected RequirementGroup rg = new RequirementGroup(); //需求组 protected PageGroup pg = new PageGroup(); //美工组 protected CodeGroup cg = new CodeGroup(); //代码组; //只要一个方法,你要我做什么事情 public abstract void execute(); }
Group.java
package com.hegd.pattern.command;public abstract class Group { //甲乙双方分开办公,你要和那个组讨论,你首先要找到这个组 public abstract void find(); //被要求增加功能 public abstract void add(); //被要求删除功能 public abstract void delete(); //被要求修改功能 public abstract void change(); //被要求给出所有的变更计划 public abstract void plan(); }
CodeGroup.java
package com.hegd.pattern.command;/** * 代码组的职责是实现业务逻辑,当然包括数据库设计了 */ public class CodeGroup extends Group { //客户要求代码组过去和他们谈 public void find() { System.out.println("找到代码组..."); } //客户要求增加一项功能 public void add() { System.out.println("客户要求增加一项功能..."); } //客户要求修改一项功能 public void change() { System.out.println("客户要求修改一项功能..."); } //客户要求删除一项功能 public void delete() { System.out.println("客户要求删除一项功能..."); } //客户要求出变更计划 public void plan() { System.out.println("客户要求代码变更计划..."); } }
DeletePageCommand.java
package com.hegd.pattern.command;public class DeletePageCommand extends Command { //执行删除一个页面的命令 public void execute() { //找到页面组 super.pg.find(); //删除一个页面 super.rg.delete(); //给出计划 super.rg.plan(); } }
Invoker.java
package com.hegd.pattern.command;public class Invoker { //什么命令 private Command command; //客户发出命令 public void setCommand(Command command){ this.command = command; } //执行客户的命令 public void action(){ this.command.execute(); } }
PageGroup.java
package com.hegd.pattern.command;public class PageGroup extends Group { //首先这个美工组应该被找到吧,要不你跟谁谈? public void find() { System.out.println("找到美工组..."); } //美工被要求增加一个页面 public void add() { System.out.println("客户要求增加一个页面..."); } //客户要求对现有界面做修改 public void change() { System.out.println("客户要求修改一个页面..."); } //甲方是老大,要求删除一些页面 public void delete() { System.out.println("客户要求删除一个页面..."); } //所有的增删改那要给出计划呀 public void plan() { System.out.println("客户要求页面变更计划..."); } }
RequirementGroup.java
package com.hegd.pattern.command;public class RequirementGroup extends Group { //客户要求需求组过去和他们谈 public void find() { System.out.println("找到需求组..."); } //客户要求增加一项需求 public void add() { System.out.println("客户要求增加一项需求..."); } //客户要求修改一项需求 public void change() { System.out.println("客户要求修改一项需求..."); } //客户要求删除一项需求 public void delete() { System.out.println("客户要求删除一项需求..."); } //客户要求出变更计划 public void plan() { System.out.println("客户要求需求变更计划..."); } }
AddRequirementCommand.java
package com.hegd.pattern.command;public class AddRequirementCommand extends Command { //执行增加一项需求的命令 public void execute() { //找到需求组 super.rg.find(); //增加一份需求 super.rg.add(); //给出计划 super.rg.plan(); } }
用户点评