命令模式总结

来源:互联网 发布:淘宝商品交易风险保障 编辑:程序博客网 时间:2024/05/01 06:07

命令模式遵循封装变化、针对接口及开闭原则。

命令模式通过提供统一接口,是不同对象的方法调用拥有一致的外观,从而实现执行者的可扩充性。

命令模式主要处理统一访问不同类型对象的需求。

命令模式最主要的缺点是需要额外提供命令类,有时命令类数量也会很庞大。


命令模式简单示例

package commandpattern;public interface Command {/** * 执行功能方法 *  * @return 执行成功返回true,否则返回false */boolean execute();/** * 获取命令名称 *  * @return */String getCommandName();}
package commandpattern.commands;import commandpattern.Command;import commandpattern.functionality.Init;public class InitCommand implements Command{private String commandName = "初始化命令";@Overridepublic boolean execute() {Init init = new Init();if(init.load()&&init.config()&&init.init()){return true;}return false;}@Overridepublic String getCommandName() {return commandName;}}
package commandpattern.commands;import commandpattern.Command;import commandpattern.functionality.Init;public class ReinitCommand implements Command{private String commondName = "重新初始化信息";@Overridepublic boolean execute() {Init init = new Init();if(init.config()&&init.reinit()){return true;}return false;}@Overridepublic String getCommandName() {return commondName;}}
package commandpattern.functionality;/** * 初始化方法 * 首次初始化需要加载数据,读取配置文件 * 从新加载时只需要读取配置文件 */public class Init {public boolean load(){System.out.println("--加载数据");return true;}public boolean config(){System.out.println("--读取配置文件");return true;}public boolean init(){System.out.println("--初始化角色信息");return true;}public boolean reinit(){System.out.println("--重新初始化角色信息");return true;}}
package commandpattern;import java.util.ArrayList;import java.util.List;/** * 执行器 */public class Executor {//执行命令列表private List<Command> commonds = new ArrayList<Command>();//添加命令public void addCommond(Command commond) {commonds.add(commond);}/** * 执行命令 */public void executeCommands(){for (Command commond : commonds) {if(commond.execute()){System.out.println(commond.getCommandName()+"执行成功");}else{System.out.println(commond.getCommandName()+"执行失败");}}}}
package commandpattern;import commandpattern.commands.InitCommand;import commandpattern.commands.ReinitCommand;public class Test {public static void main(String[] args) {Executor exe = new Executor();exe.addCommond(new InitCommand());exe.addCommond(new ReinitCommand());exe.executeCommands();}}
测试结果

--加载数据--读取配置文件--初始化角色信息初始化命令执行成功--读取配置文件--重新初始化角色信息重新初始化信息执行成功






0 0
原创粉丝点击