设计模式深入浅出--21.命令模式简单实例及其在JDK中的应用

2023-11-04

命令模式:

定义:

将“请求”封装成对象,以便使用不同的请求

命令模式解决了应用程序中对象的职责以及它们之间的通信方式

类型:行为型

 

适用场景:

请求调用者和请求接收者需要解耦,使得调用者和接收者不直接交互

需要抽象出等待执行的行为

优点:

降低解耦

容易扩展新命令或者一组命令

缺点:

命令的无限扩展会增加类的数量,提高系统实现复杂度

相关设计模式:

命令模式和备忘录模式

Coding:

创建command接口

 创建课程CourseVideo类

创建OpenCourseVideoCommand类实现Command接口

创建CloseCourseVideoCommand类实现Command接口

 创建Staff类

当前的UML类图

创建Test类

运行结果

在JDK中的应用 

Runnable接口(我们可以了解为runnable就是一个抽象的命令) 

对于它下面所有的实现了都可以理解为是它的命令的具体实现

类Test,它的run方法可以理解为我们上面的excute方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计模式深入浅出--21.命令模式简单实例及其在JDK中的应用 的相关文章

  • java设计模式——原型模式(Prototype Pattern)

    概述 在使用原型模式时 我们需要首先创建一个原型对象 再通过复制这个原型对象来创建更多同类型的对象 需要注意的是通过克隆方法所创建的对象是全新的对象 它们在内存中拥有新的地址 通常对克隆所产生的对象进行修改对原型对象不会造成任何影响 每一个
  • 设计模式浅析-适配器模式

    前言 2017年悄悄的来了 无声无息的以至于我都还没好好缅怀一下荒诞的2016 不得不说 2016没能通过努力达到应该有的程度 看样子目标还是要有的 那就先设定一个小目标吧 设计模式 当你学会了设计模式 就要忘记设计模式 辉哥 适配器模式
  • 创建型模式 - 单例模式

    核心 严谨起见 私有构造必须要加 避免外部创建新的实例 特性 单例类只能有一个实例 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 常用的几种单例模式写法 懒汉方式 双重锁方式 静态类方式 每种方式对应的特性 方式
  • Java之美[从菜鸟到高手演变]之设计模式二

    在阅读过程中有任何问题 请及时联系 egg 邮箱 xtfggef gmail com 微博 http weibo com xtfggef 如有转载 请说明出处 http blog csdn net zhangerqing 我们接着讨论设计模
  • Gof23设计模式之简单工厂/静态工厂模式

    在java中 万物皆对象 这些对象都需要创建 如果创建的时候直接new该对象 就会对该对象耦合严重 假如我们要更换对象 所有new对象的地方都需要修改一遍 这显然违背了软件设计的开闭原则 如果我们使用工厂来生产对象 我们就只和工厂打交道就可
  • Head First Design Mode(12)-状态模式

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 状态模式 状态模式和策略模式是 双胞胎 在出生时才分开 策略模式是围绕可以互换的算法来创建成功业务的 状态模式则是通过改变对象内部的状态来帮助对象控制自己的行为 状态
  • 设计模式---适配器模式

    适配器模式 基本介绍 适配器模式 Adapter Pattern 将某个类的接口转换成客户端期望的另一个接口表示 主的目的是兼容性 让原本因接口不匹配不能一起工作的两个类可以协同工作 其别名为包装器 Wrapper 适配器模式属于结构型模式
  • Java 动态代理和静态代理 详解(结合代码实列)

    文章目录 Java 动态代理和静态代理的区别 下面是一个结合代码示例 运行上述代码 输出如下 总结 Java 动态代理和静态代理的区别 动态代理和静态代理是两种不同的代理模式 它们在代理对象的创建和使用方式上有所不同 静态代理 静态代理是在
  • 开放-封闭原则

    一 定义 开放 封闭原则 是说软件实体 类 模块 函数等等 应该是可扩展的 但是不可修改 ASD 这个原则其实是有两个特征 一个是说 对于扩展是开放的 Open for extension 对于更改是封闭的 Closed for modif
  • 浅析Java单例设计模式,自写demo,简单易懂

    单例模式特点 1 构造器私有 2 在一个Java应用程序中 可保证只有一个实例对象 3 只提供一个供外界调用的getInstance 方法 单例模式优点 1 减少某些对象的频繁创建 降低系统开销和内存占用 2 外部调用不使用new关键字 降
  • 设计模式深入浅出--21.命令模式简单实例及其在JDK中的应用

    命令模式 定义 将 请求 封装成对象 以便使用不同的请求 命令模式解决了应用程序中对象的职责以及它们之间的通信方式 类型 行为型 适用场景 请求调用者和请求接收者需要解耦 使得调用者和接收者不直接交互 需要抽象出等待执行的行为 优点 降低解
  • Java开发中的23种设计模式详解

    设计模式 Design Patterns 可复用面向对象软件的基础 设计模式 Design pattern 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可重用代码 让代码更容易被他人理解 保证代码可
  • 设计模式之Adapter模式

    今天这篇文章 我们来讲将设计模式中的 Adapter模式 中文就是 适配器模式 先说说一个生活中适配器模式的案例 有助于理解 现在有一个100伏特的交流电源 我现在想给笔记本充电 但是笔记本只能用12伏特的直流电 那我们是不是不能用这个电源
  • java设计模式——策略模式(Strategy Pattern)

    概述 在策略模式中 我们可以定义一些独立的类来封装不同的算法 每一个类封装一种具体的算法 在这里 每一个封装算法的类我们都可以称之为一种策略 Strategy 为了保证这些策略在使用时具有一致性 一般会提供一个抽象的策略类来做规则的定义 而
  • Java之美[从菜鸟到高手演变]之设计模式四

    在阅读过程中有任何问题 请及时联系 egg 邮箱 xtfggef gmail com 微博 http weibo com xtfggef 转载请说明出处 http blog csdn net zhangerqing 其实每个设计模式都是很重
  • 软件设计模式----访问者模式

    访问者模式 模式动机 对于系统中的某些对象 它们存储在同一个集合中 且具有不同的类型 而且对于该集合中的对象 可以接受一类称为访问者的对象来访问 而且不同的访问者其访问方式有所不同 访问者模式为解决这类问题而诞生 在实际使用时 对同一集合对
  • Java设计模式(25):责任链模式(职责链模式)

    25 责任链模式 25 1 问题引入 采购需求 采购员需要采购一批教学器材 对器材采购金额有分级审批权限 如果金额小于等于3000元 由教学主任审批 0 lt x lt 3000 如果金额小于等于10000元 由院长审批 3000 lt x
  • java设计模式——代理模式(Proxy Pattern)

    概述 在某些情况下 一个客户不想或者不能直接引用一个对 象 此时可以通过一个称之为 代理 的第三者来实现 间接引用 代理对象可以在客户端和目标对象之间起到 中介的作用 并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外
  • Gof23设计模式之工厂方法模式和抽象工厂模式

    在java中 万物皆对象 这些对象都需要创建 如果创建的时候直接new该对象 就会对该对象耦合严重 假如我们要更换对象 所有new对象的地方都需要修改一遍 这显然违背了软件设计的开闭原则 如果我们使用工厂来生产对象 我们就只和工厂打交道就可
  • Java设计模式-单例模式

    单例模式 在有些系统中 为了节省内存资源 保证数据内容的一致性 对某些类要求只能创建一个实例 这就是所谓的单例模式 单例模式的定义与特点 单例 Singleton 模式的定义 指一个类只有一个实例 且该类能自行创建这个实例的一种模式 例如

随机推荐

  • 【Node】腾讯云OSS存储上传图片

    目录 准备工作 后端Koa 前端Vue 建议 准备工作 购买腾讯云OSS存储后需要获得以下几个变量 SecretId 秘钥id SecretKey 秘钥 Bucket 存储桶名称 可在腾讯云的图像界面创建存储桶 Region 购买时选择的区
  • 苹果电脑计算机找不到打印机,Mac_Mac怎么连接打印机?苹果电脑Mac打印机设置教程 ,Mac怎么连接打印机?Mac打印机 - phpStudy...

    Mac怎么连接打印机 苹果电脑Mac打印机设置教程 Mac怎么连接打印机 Mac打印机该怎么设置呢 对于大多数 USB 打印机 您只需将打印机连接到 Mac OS X 会自动找到打印机 并下载所有驱动程序 如有必要 然后 您就可以打印了 您
  • linux进程调度,优先级、进程nice值

    我自己补充一下 APUE8 16中讲到进程调度 UNIX系统历史上对进程提供的只是基于调度优先级的粗粒度的控制 调度策略和调度优先级是由内核确定的 但是内核可以通过调整nice值选择以更低优先级运行 通过调整nice值降低它对cpu的占有
  • telnet mysql3306端口失败

    在linux上telnet远程mysql端口失败 经过上网查找后 找到多种方法 1 我在本地的Navicat上新增了一个用户 主机名是linux的ip 也可以是 百分号代表这个用户可以在任何地方对mysql进行远程连接 2 登录mysql
  • mipsel-openwrt-linux交叉编译zlog日志库并测试

    mipsel openwrt linux交叉编译zlog日志库并测试 文章目录 mipsel openwrt linux交叉编译zlog日志库并测试 一 准备 二 交叉编译测试 1 mipsel openwrt linux交叉编译过程 ar
  • 机器学习集成模型学习——Bagging集成学习(三)

    Bagging bagging的集成方式是 用1个模型 元模型 然后将这个元模型分成多个相同模型 每个模型使用训练集的一部分进行训练 得到多个基模型 最后测试时分别跑每个模型 平均结果得出这个集成模型的最终预测结果 案例代码 from sk
  • VSCode将QT(shadow build)编译输出到指定文件

    VSCode将QT shadow build 编译输出到指定文件 一 啥是shadow build 实际上就是将编译输出的文件跟源码文件放在不同地方 也就是out of source 0 00 在qtcreator中设置就很方便很方便 直接
  • C#将字符串格式化为Json

    private string ConvertStringToJson string str 格式化json字符串 JsonSerializer serializer new JsonSerializer TextReader tr new
  • 如何判断Javascript对象是否存在

    Javascript语言的设计不够严谨 很多地方一不小心就会出错 举例来说 请考虑以下情况 现在 我们要判断一个全局对象myObj是否存在 如果不存在 就对它进行声明 用自然语言描述的算法如下 if myObj不存在 声明myObj 你可能
  • 机器学习总结之第二章模型评估与选择

    2 1经验误差与过拟合 错误率 a个样本分类错误 m个样本 精度 1 错误率 误差 学习器实际预测输出与样本的真是输出之间的差异 训练误差 即经验误差 学习器在训练集上的误差 泛化误差 学习器在新样本上的误差 过拟合 学习器把训练样本学的
  • PHP自增、自减运算流程解析

    PHP自增运算解析 0x01 PHP自增运算 代码如下 0x02 PHP自减运算 代码如下 0x01 PHP自增运算 代码如下
  • Java判断一个时间是否在时间区间内

    package com liying tiger test import java text ParseException import java text SimpleDateFormat import java util Calenda
  • 图像处理——滤波器的比较

    滤波器 方框滤波 boxFilter 均值滤波 blur 高斯滤波 GaussianBlur 中值滤波 medianBlur 线性滤波器 线性滤波器经常用于剔除输入信号中不想要的频率或者从许多频率中选择一个想要的频率 常见的有 低通 高通
  • linux命令 chmod 755的含义 及drwxr-xr-x 的含义

    linux drwxr xr x 第一位表示文件类型 d是目录文件 l是链接文件 是普通文件 p是管道 第2 4位表示这个文件的属主拥有的权限 r是读 w是写 x是执行 第5 7位表示和这个文件属主所在同一个组的用户所具有的权限 第8 10
  • docker 安装node

    docker 安装node 1 使用docker安装node 使用docker安装 docker pull node 拉取镜像 docker run id name c node node 创建容器 可以看到已经装好了 启动node doc
  • Linux系统编程-C++ I/O库

    文章目录 一 总述 二 输出缓冲 三 文件输入输出 四 string流 五 输入输出格式 总述 1 控制布尔值的格式 2 指定整型值的进制 3 在输出中指出进制 4 控制浮点数格式 4 1 指定打印精度 5 输出空白 六 未格式化的输入输出
  • java 数组中存储26个英文字母_利用数组打印26个英文字母

    可以考虑下面两种程序 1 public class Letter public static void main String args for char c a c lt z c System out print c 2 class AB
  • 如何实现一个定时器?看这一篇就够了

    本文主要介绍定时器作用 实现定时器数据结构选取 并详细介绍了跳表 红黑树 时间轮实现定时器的思路和方法 定时器作用 定时器在各种场景都需要用到 比如游戏的Buff实现 Redis中的过期任务 Linux中的定时任务等等 顾名思义 定时器的主
  • Qt常用部件介绍

    这里先给大家介绍 Designer 界面设计器 中例举的常用部件 以便对 Qt 的部件有一定认识 其具体用法后面再作介绍 布局管理组 Layouts 空间间隔组 弹簧 Spacers 按钮组 buttons 项目视图组 Item Views
  • 设计模式深入浅出--21.命令模式简单实例及其在JDK中的应用

    命令模式 定义 将 请求 封装成对象 以便使用不同的请求 命令模式解决了应用程序中对象的职责以及它们之间的通信方式 类型 行为型 适用场景 请求调用者和请求接收者需要解耦 使得调用者和接收者不直接交互 需要抽象出等待执行的行为 优点 降低解