设计模式之Command——电视篇

海波龙(Oracle Hyperion)单点登陆问题记录 Oracle海波龙套件已经多年未更新,按Oracle官方文档实施单点登陆启用之后,SmartView工具通过专用链接方式无法登陆系统。 在抓包逆向分析之后 定位到HspSmartViewServlet类在执行以下代码时获得的ssotoken无效导致,在某大厂工作的时候曾通过在filter中截获请求的方式植入Attribute,保留账号密码并在单点程序中处理实现登陆。 但在完美世界的环境中... 阅读详情

    每天晚上,抢电视遥控器都是我们家的保留节目。女儿喜欢看卡通屏道,老婆喜欢看电视剧屏道,我呢则喜欢看足球屏道。因此谁控制了遥控器,就等于实现了自己的节目梦想了。嘿嘿,其实每次都是我女儿成功得到,而且她还每次都阵阵有词的说:“大的应该让小的吗?”,你看这孩子,不知跟谁学的。然后遥控器就是老婆的,最后才轮到我,当我高兴的按到足球屏道时,播音员说:“今天的节目就到这里了,请明天在看!”,我倒地狂呕血。

大家都知道电视遥控器节目面板(ProgramPan)是由节目按钮组成,通过选择相应的节目按钮,就可以切换到相应的节目屏道。

下来让我们看看如何实现通过遥控器按钮选择节目屏道的过程吧。

 

1、在这里,先定义遥控器按钮(RemoteControlButton)接口:

public interface RemoteControlButton {

  public abstract void  selectProgram(); //选择节目屏道

}

2、再定义遥控器按钮(RemoteControlButton)接口的实现类:

A:卡通节目按钮(CartonProgramButton)类:

public class CartonProgramButton implements RemoteControlButton{

  public void selectProgram() {

    System.out.println("选择了卡通屏道!");

  }

}

B:电视剧节目按钮(TvPlanProgramButton)类:

public class TvPlanProgramButton implements RemoteControlButton {

  public void selectProgram() {

    System.out.println("选择了电视剧屏道!");

  }

}

C:足球节目按钮(FootProgramButton)类:

public class FootProgramButton implements RemoteControlButton {

  public void selectProgram() {

    System.out.println("选择了足球屏道!");

  }

}

3、遥控器节目面板(ProgramPan)类:用来控制节目按钮,显示节目

public class ProgramPan {

  public static List programList() {

    List list = new ArrayList();  //节目屏道按钮列表

    list.add(new CartonProgramButton()); //卡通屏道按钮

    list.add(new TvPlanProgramButton()); //电视剧屏道按钮

    list.add(new FootProgramButton());   //足球屏道按钮

    return list;

  }

}

4、编写测试类:

public class TestCommand {

  public static void main(String[] args) {

    List list = ProgramPan.programList();  //获得节目屏道按钮

    for (Iterator it = list.iterator();it.hasNext();)

      ( (RemoteControlButton) it.next()).selectProgram();  //选择节目屏道中对应的节目

  }

}

5、说明:

A:Command说白了就是通过选择一个个命令,然后执行相应动作。

B:Command是对行为进行封装的典型模式,在本例中通过遥控器节目面板(ProgramPan)这个封装类来实现我们看电视节目的目的。

C:Command模式和Facade(外观)模式似乎比较相似。都是通过封装类来进行访问的。如何区分,对这点我也比较疑惑。
   D:Command模式是用collection的对象容器类,把另一些类放到里面,以实现集体的一块操作,以进行封装。facade模式是把某个功能的操作,集中放在一起,使之用一个统一的,对外接口,比如:封装数据库操作,发邮件操作等等。
   6、特此感谢:
   感谢changlich网友对Command模式和facade模式的区别的解释,特此将这个解释加入到说明中,希望能对大家有所帮助。再次感谢大家的支持。

实战避坑:示波器测量非隔离开关电源的炸机风险与隔离方案 本文详细分析了使用示波器测量非隔离开关电源时的炸机风险,揭示了地线环路导致的短路问题,并对比了四种防炸机解决方案,包括示波器隔离供电、拔掉电源地线、使用差分探头和被测板隔离供电。重点推荐使用隔离变压器方案,确保测量安全与精度,同时提供了实操建议与经验分享,帮助工程师避免常见测量事故。 阅读详情

相关推荐

软件测试工程师最常用的Linux系统命令大全(汇总)

cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。

1330

设计模式之Command——电视篇(原创)

设计模式之Command——电视篇 每天晚上,抢电视遥控器都是我们家的保留节目。女儿喜欢看卡通屏道,老婆喜欢看电视剧屏道,我呢则喜欢看足球屏道。因此谁控制了遥控器,就等于实现了自己的节目梦想了。嘿嘿,其实每次都是我女儿成功得到,而且她还每次都阵阵有词的说:“大的应该让小的吗?”,你看这孩子,不知跟谁学的。然后遥控器就是老婆的,最后才轮到我,当我高兴的按到足球屏道时,播音员说:“今天的节目就

lxgljj的专栏 4676

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1011

设计模式:命令模式(Command)

设计模式:命令模式(Command)

ProgramNovice的博客 1468

油气井管柱力学发展

油气井管柱力学发展 1 石油管柱力学问题的发复杂性 1)油气管柱动力学的非线性 钻井中钻柱在重力、钻压、扭矩、钻井液浮力和井壁约束等作用下,产生三维变形。一方面随井眼轴线的弯曲而弯曲,这一变形被称为管柱的初位移;另一方面,管柱在运动过程中相对井眼轴线也有变形,这种变形被称为计算位移。管柱大变形主要表现在初位移部分,计算位移相对很小。大曲率井眼中管柱产生大挠度,但管柱很长且柔软性较好,变形一般仍保持...

weixin_43831995的博客 950

第五节 Amesim《直动型溢流阀HCD建模》HCD5 学习资料

利用HCD原则创建直动型溢流阀的界面。这可能包括图形化表示直动型溢流阀的工作原理、操作方式和调节方法。这样的界面应当直观且易于理解,使用户能够轻松了解阀门的功能和使用方法。

m0_58052642的博客 1330

设计模式命令模式(行为型)

文章目录一、模式定义二、模式角色三、模式分析四、典型例子五、适用场景 一、模式定义 命令模式(Command Pattern):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分离,两者之间通过命令对象进行沟通,方便将命令对象进行储存、传递、调用、增加与管理。命令模式别名为动作(Action)模式或事务(Transaction)模式,属于对象行为型模式。 二、模式角色 命令模式包括如下角...

Nicky's blog 3100

用 ABAP RAP + XCO 把 Excel 导入业务对象:从弹窗 Action 到 EML 落库与附件清理的完整实践

摘要:本文介绍了在SAP RAP框架下实现Excel批量导入功能的完整方案。通过XCO库的XLSX模块解析Excel文件,结合RAP的行为定义和Fiori Elements界面集成,构建了一个支持试运行、数据校验和自动合并的业务导入功能。方案采用RAP标准范式,包括Action参数设计、EML事务处理、附件管理以及异常消息反馈,实现了从文件上传到数据落库的端到端流程,既保证了系统稳定性,又提升了业务用户体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

Java 设计模式-命令模式(Command Pattern)

命令模式(Command Pattern)是对象的行为模式,其意图是将请求封装在对象的内部。 命令模式涉及的角色有: 客户端(Client )角色:负责创建一个具体的命令,并指定命令的接受者 命令(Command)角色:定义一个命令公共的操作接口 具体命令(Concrete Command)角色:定义一个命令的接收者和行为之间的耦合。实现命令接口的公共接口,调用接......

技术分享 261

Centos 7 Linux 安装单机 Hadoop(HDFS):下载、安装、配置、测试

本文详细介绍了在 CentOS 7 系统上安装与配置单机 Hadoop(HDFS)的完整流程,涵盖 JDK 环境准备、Hadoop 安装包下载与部署、核心配置文件(core-site.xml、hdfs-site.xml 等)修改、SSH 免密登录设置、HDFS 格式化及服务启动,并通过命令行与 Web 界面验证 HDFS 和 YARN 功能,适合 Hadoop 初学者快速搭建本地测试环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 3235

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 581

行为设计模式之Command (命令)

需要发出请求的对象(调用者)和接收并执行请求的对象(执行者)之间没有直接依赖关系时。比如遥控器 每个按钮绑定一个command对象,这个Command对象内部持有真正执行操作的Receiver(如文档编辑器、打印服务)的引用,并知道调用Receiver的哪个方法。改变按钮功能只需更换绑定的Command对象。

qq_45938780的博客 1185

有趣的方式学习DDR5(4)—— DDR5 SDRAM 启动与初始化过程全攻略

🟢。

weixin_43199439的博客 1623

JAVA设计模式-Command

Command模式就像linux的shell命令一样,输入一条命令,它就能执行相应的操作。例如,我们想要打开电视机,我们不需要用tv.turnOn()这样的方法来打开,而是类似command.exe("turn on the TV")这样的语句。把命令封装起来有一个好处,我们可以记录下执行过哪些命令,在什么时间执行的,是谁执行的。当然,不使用命令模式也可以实现这样的功能,我们只需要在类似tv.turnOn()这个方法内部加上log就行了,或者是我们在客户端加上log。虽然这是一个解决方案,但是不是最

889

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C#设计模式读书笔记之命令模式(Command Pattern)

命令模式(Command Pattern)【使用频率:★★★★☆】 1. 概述   将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。 命令模式的本质就在于将命令进行封装,将发出命令的责任和执行命令的责任分开。 2. 模式中...

qq826364410的专栏 403

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

23种设计模式-命令(Command)设计模式

23种设计模式-命令(Command)设计模式

Hanson的博客 1219

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Command 命令模式

在开发过程中,我可能会需要向某些对象发送一些请求,但是我们不知请求的具体接收者是谁,也不知道被请求的操作是那个,我们只知道在程序运行中指定具体的请求接收者即可。打个比方,电视遥控器,我们只需要知道按那个按钮能够打开电视、关闭电视和换台即可,并不需要知道是怎么开电视、关电视和换台的。对于这种情况,我们可以采用命令模式来进行设计。          一、基本定义

a1317338022的博客 697

Command设计模式

命令模式的三大角色: Command:命令接口 Receiver:命令的执行者 Invoker:命令的发送者 以遥控器给电视发送为例进行说明。 1)电视机接口(电视行业总有标准) package com.cqs.pattern.command; /** * receiver类:TV接口 * Created by cqs on 10/23/16. */ public inte

lixwjava的专栏 564

行为设计模式-命令(Command)

【代码】行为设计模式-责任链(Command)

weixin_60948956的博客 112

Linux C++ 057-设计模式之命令模式

本节关键字:Linux、C++、设计模式、命令模式 相关库函数:

Tianwx的博客 499

【图解设计模式系列】The Command Pattern: 命令行模式

命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 仔细想一下 这不就是命令行的底层实现嘛?自己之前一直都在使用命令行,而从来没有想过到底是怎么实现的,只需短短键入几个字符就能得到想要的结果。 但是同时 有时候命令太多记不住也很头疼,而且有的时候,如果你不知道某个命令可以做这个事情 那么挫败感就会很强。 英文解释: encapsulates a request as an obj

Tech in Pieces 576

设计模式 - 命令模式(Command)

Command模式将一个请求封装为一个命令对象(ConcreteCommand),并指明接收者(Receiver);调用者(Invoker)存储命令。当调用者Invoker请求命令对象(ConcreteCommand),命令对象(ConcreteCommand)将请求委托给接收者(Receiver)对象执行处理该请求的各操作。别名:动作(Action),事务(Transaction)。类图:

松哥的博客 535

设计模式之命令模式(Command)

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作 经典的命令模式包括4个角色: Command:定义命令的统一接口 ConcreteCommand:Command接口的实现者,用来执行具体的命令,某些情况下可以直接用来充当Receiver。 Receiver:命令的实际执行者Invoker:命令的请求者,是命令模式中最重要的角色。这个...

gk 230
上一篇: 设计模式之Flyweight——打球篇
下一篇: 设计模式之State——交通篇
cyokin
博客等级 码龄24年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值