命令模式

作者: Chauncey_Chen | 来源:发表于2017-01-04 16:05 被阅读54次

    命令模式

    定义

    命令模式:将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。

    举个例子

    就像领导命令员工工作,,,领导让他开车,去搬砖.然后回复领导完成的结果.

    android登录的时候,登录,注册两个功能.
    用户的操作就是命令,他不管你如何实现,

    解耦隔离

    所谓解耦隔离,,其实就是让两者互不相干.即登录的命令和结果,和如何登录进行分类. 登录只关心结果,而如果登录更注重如何实现.就比如,有一天我想讲登录的方式换个姿势~ 以前用volley现在用Retrofit.而丝毫不会对以前的架构产生影响.

    关键词

    1、Command 接口命令

    2、Invoker 使用命令对象的入口,持有命令Command

    3、ConcreteCommand 命令接口实现,持有Received

    4、Received 真正的命令执行对象


    代码实例:

    1、Command 接口命令

    public interface Command {
    
        void excute();
        
        void back();
        
    }
    
    

    2、Invoker 使用命令对象的入口,持有命令Command

    /**
     * 使用命令对象的入口,持有命令Command
     * @author ccj
     *
     */
    public class General {
        
        private Command command;
    
        public General(Command command) {
            this.setCommand(command);
        }
        
        public void Attach(){
            command.excute();
            
        }
        
        public void back(){
            command.back();
            
        }
        
    
        
        
    
    }
    

    3、ConcreteCommand 命令接口实现,持有Received

    /**
     * 命令接口实现,持有Received army
     * @author ccj
     *
     */
    public class AttachCommand implements Command{
        
        private Army army;
        
        public AttachCommand(Army army) {
            this.army = army;
        }
    
        @Override
        public void excute() {
            army.attack();
        }
    
        @Override
        public void back() {
            army.back();
        }
    
        
        
    }
    
    

    4、Received 真正的命令执行对象

    
    /**
     * Received 真正的命令执行对象 
     * @author ccj
     *
     */
    public class Army {
    
        public Army( ) {
    
        }
    
        public void attack() {
            System.out.println("Army 攻击城市");
    
        }
    
        public void back() {
            System.out.println("Army 撤退");
    
        }
    }
    
    

    具体使用者

    
    public class Test {
        
        
        public static void main(String[] args) {
            
            Army army=new Army();
            
            Command command=new AttachCommand(army);
            
            General general=new General(command);
            
            general.Attach();
        }
        
    
    }
    
    

    测试结果

    Army 攻击城市
    

    总结

    命令模式,就会用一个接口,轻松的解耦实现!

    面向接口编程,其中一个思想就是用接口抽象出行为,将"行为请求者"与"行为实现者"进行解耦.命令模式,在MVP的设计模式中,就用的这个道理.

    相关文章

      网友评论

        本文标题:命令模式

        本文链接:https://www.haomeiwen.com/subject/kuoovttx.html