我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何在Java中使用命令模式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何在Java中使用命令模式

如何在Java中使用命令模式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

java基本数据类型有哪些

Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用来表示小数的数据类型。3、字符类型,字符类型的关键字是“char”。4、布尔类型,是表示逻辑值的基本数据类型。

命令模式

定义:将请求封装成对象,这可以让你使用不同的请求、队列、或者日志来参数化其他对象。

何时使用命令模式?当需要将发出请求的对象和执行请求的对象解耦的时候,使用命令模式。

在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个或一组动作。

调用者通过调用命令对象的execute()方法发出请求,这会使接收者的动作被调用。

调用者可以接收命令当作参数,甚至在运行时动态地进行。

优点:

降低了系统耦合度。

新的命令可以很容易添加到系统中去。

缺点:使用命令模式可能会导致某些系统有过多的具体命令类。

实现案例

需求:实现一个遥控器类,遥控器有多组开/关按钮,每组按钮控制一个电器对象的开和关。使用命令模式实现整个功能。

创建命令接口

package com.example.designpatternsdemo.commandPattern;public interface Command {    public void execute();}

创建电灯、电视类(命令接收者)

package com.example.designpatternsdemo.commandPattern;public class Light {//on/off动作    public void on(){        System.out.println("开启电灯");    }    public void off(){        System.out.println("关闭电灯");    }}
package com.example.designpatternsdemo.commandPattern;public class TV {    public void on(){        System.out.println("开启电视");    }    public void off(){        System.out.println("关闭电视");    }}

创建具体命令类

package com.example.designpatternsdemo.commandPattern;public class LightOnCommand implements Command{    //电灯对象    private Light mLight;    public LightOnCommand(Light light){        this.mLight = light;    }    @Override    public void execute() {        mLight.on();    }}
package com.example.designpatternsdemo.commandPattern;public class LightOffCommand implements Command{    //电灯对象    private Light mLight;    public LightOffCommand(Light light){        this.mLight = light;    }    @Override    public void execute() {        mLight.off();    }}

这里省略电视的开关命令类

创建遥控器类

package com.example.designpatternsdemo.commandPattern;public class RemoteControl {    //保存开关命令对象的数组    Command[] onCommands;    Command[] offCommands;    public RemoteControl(){        //初始化数组        onCommands = new Command[2];        offCommands = new Command[2];    }    //存储命令    public void setCommand(int index,Command onCommand,Command offCommand){        onCommands[index] = onCommand;        offCommands[index] = offCommand;    }    //开按钮    public void onButtonPress(int btnIndex){        onCommands[btnIndex].execute();    }    //关按钮    public void offButtonPress(int btnIndex){        offCommands[btnIndex].execute();    }}

创建客户类(测试类)

package com.example.designpatternsdemo.commandPattern;public class Client {    public static void main(String[] args) {        //创建电灯对象(命令接收者)        Light myLight = new Light();        //创建电灯开关命令对象        LightOnCommand lightOnCommand = new LightOnCommand(myLight);        LightOffCommand lightOffCommand = new LightOffCommand(myLight);        //创建遥控器对象(命令调用者)        RemoteControl remoteControl = new RemoteControl();        //设置命令        remoteControl.setCommand(0,lightOnCommand,lightOffCommand);        //发起命令执行请求        remoteControl.onButtonPress(0);        remoteControl.offButtonPress(0);        TV myTv = new TV();        TvOnCommand tvOnCommand = new TvOnCommand(myTv);        TvOffCommand tvOffCommand = new TvOffCommand(myTv);        remoteControl.setCommand(1,tvOnCommand,tvOffCommand);        remoteControl.onButtonPress(1);        remoteControl.offButtonPress(1);    }}

将开/关电灯、电视的请求封装成命令类对象,在类中的execute()方法调用具体电灯/电视的开关动作,调用时,遥控器类(命令调用者)只需调用具体某个命令对象的execute()方法,那他就会通知具体的电器来执行动作,这样,就实现了命令调用者和执行者之间的解耦。调用者不需要知道是谁执行动作,只需要调用命令对象的execute()方法去通知执行就可以。

关于如何在Java中使用命令模式问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何在Java中使用命令模式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在Java中使用命令模式

如何在Java中使用命令模式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮
2023-06-14

如何在Java项目中实现一个命令模式

如何在Java项目中实现一个命令模式?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排
2023-05-31

如何理解Java设计模式的命令模式

本篇内容主要讲解“如何理解Java设计模式的命令模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Java设计模式的命令模式”吧!一、什么是命令模式命令模式是一个高内聚的模式,其定义为:
2023-06-25

如何在java中使用装饰者模式

如何在java中使用装饰者模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开
2023-06-14

Java行为型模式中命令模式分析

在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时可以使用命令模式来进行设计
2023-02-17

Java中的命令设计模式如何利用IO文件过滤器使用

本篇文章为大家展示了Java中的命令设计模式如何利用IO文件过滤器使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一. 点睛java io流里面使用到了很多的设计模式,最典型的就是装饰模式,还有命
2023-05-31

jmap等命令行工具如何在java中使用

这篇文章将为大家详细讲解有关jmap等命令行工具如何在java中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。java自带命令行工具(jmap,jhat,jinfo)(1)JMAP1.作
2023-05-31

怎么在Linux中使用命令退出编辑模式

这篇文章给大家介绍怎么在Linux中使用命令退出编辑模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一般指令模式、编辑模式、指令列命令模式1.vim 文件名 进入一般模式;2.按 i 进行编辑 进入编辑
2023-06-09

PHP设计模式中的命令模式怎么使用

这篇文章主要介绍“PHP设计模式中的命令模式怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP设计模式中的命令模式怎么使用”文章能帮助大家解决问题。命令模式(Command Pattern
2023-07-05

如何在Ubuntu中使用crontab命令

这篇文章将为大家详细讲解有关如何在Ubuntu中使用crontab命令,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先就要编辑crontab文件。crontab是一个文本文件,用来存放你要
2023-06-07

cut命令如何在linux中使用

cut命令如何在linux中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。要用到,来mark一下:ubuntu@VM-0-15-ubuntu:~/taoge$ cat
2023-06-09

traceroute命令如何在Linux中使用

本篇文章为大家展示了traceroute命令如何在Linux中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Linux traceroute命令使用方法实例详解一、默认使用的是UDP协议(300
2023-06-09

shutdown命令如何在linux中使用

这期内容当中小编将会给大家带来有关shutdown命令如何在linux中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。shutdown命令用来系统关机命令。shutdown指令可以关闭所有程序,并依用
2023-06-09

如何在Linux中使用netstat命令

本篇文章为大家展示了如何在Linux中使用netstat命令,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.命令格式:netstat [-acCeFghilMnNoprstuvVwx][-A<网络
2023-06-13

如何在Linux中使用ping命令

这期内容当中小编将会给大家带来有关如何在Linux中使用ping命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.命令格式:ping [参数] [主机名或IP地址]2.命令功能:ping命令用于:确定
2023-06-13

如何在Linux中使用ifconfig命令

如何在Linux中使用ifconfig命令?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.命令格式:ifconfig [网络设备] [参数]2.命令功能:ifconfig
2023-06-13

如何在linux中使用watch命令

本篇文章为大家展示了如何在linux中使用watch命令,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,wat
2023-06-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录