欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

设计模式之命令模式,设计模式命令,参考:设计模式之禅部分代

来源: javaer 分享于  点击 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();   } } 
相关栏目:

用户点评