• java 命令对象简单学习实现:


    命令模式:首先我们要知道命令模式的基本定义:来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。一般可以实现命令的执行和撤销操作。

    他的基本目的:能够实现请求者的请求行为和实际的执行者的执行行为,两者相互独立,松耦合,非常适合多个命令的执行实现的扩展操作。

    使用命令模式基本的优势如下:

    1,大大的降低了对象之间的耦合,使得client 和 ivoker之间相互独立。

    2,新的命令,可以很容易的添加扩展到系统中,而基本不用影响原来的命令的实现操作。

    3,可以十分容易的设计实现一个组合命令,譬如,遥控器上的多个按钮的组合命令。

    4,能够实现,调用同一个方法,却可以实现执行不同的操作,取决于命令对象的参数化。

    下面用基本的小例子来简单实现下java的命令模式:

    基本步骤:

    1、创建命令接口,接口中包含excute方法,便于所有的命令对象实现统一的操作。

    2、创建实际的命令对象,实现命令接口,实现excute方法。

    3、创建接受者,实际动作的操作执行者。

    4、创建client客户端,注入命令对象,根据实际注入的命令对象,执行命令方法。

    首先,建立Command接口:

    public interface Command {
        /**
         * 
         */
        void excute();
    }

    然后建立命令对象:开灯的命令,包含有电灯的实体引用。

    public class LightOnCommand implements Command {
    
        private Light light;
    
        public LightOnCommand(Light light) {
            this.light = light;
        }
    
        @Override
        public void excute() {
            light.turnOn();
        }
    
    }

    紧接着,建立light对象,接收者,电灯对象,包含有开灯的实际动作。

    public class LightOnCommand implements Command {
    
        private Light light;
    
        public LightOnCommand(Light light) {
            this.light = light;
        }
    
        @Override
        public void excute() {
            light.turnOn();
        }
    
    }

    最后,简单,编写client的遥控器对象,测试的main方法也包含其中,简单测试命令模式的正常实现:

    注入命令对象的接口引用,实际的注入,要看实际注入的实现类,本测试,注入的开灯的实现命令对象。

    public class Remote {
    
        private Command command;
    
        public Remote(Command command) {
            this.command = command;
        }
    
        public void keyPress() {
            command.excute();
        }
    
        public static void main(String[] args) {
            Light light = new Light();
            Command command = new LightOnCommand(light);
            new Remote(command).keyPress();
        }
    
    }

    测试接口,能够正常的开灯。简单的实现了遥控器的开灯命令模式。而且要增加关灯操作,也十分简单,

    只要增加关灯的命令对象,在实际的命令请求时候,注入关灯的命令对象,就能简单的实现关灯操作。

  • 相关阅读:
    word-wrap和word-break
    sass编译生成的几个文件
    block settings drupal 8 configuration
    cookie 和 session
    程序员思维
    psr-0 和 psr-4
    eclipse的字符编码问题
    合并代码并上传
    如何部署代码
    301 CACHE
  • 原文地址:https://www.cnblogs.com/lilin0719/p/5226166.html
Copyright © 2020-2023  润新知