《研磨设计模式》chap13 命令模式
场景:机箱外面有个按钮,按钮连着线,线接着主板。按下按钮发送启动电脑的命令。
1.
1.1 组装
1.2 触发
public interface Command {//执行命令对应的操作 public void execute();
}public class ConcreteCommand implements Command {//持有相应的接受者对象 private Receiver receiver = null;//示意,命令对象可以有自己的状态 private String state;public ConcreteCommand(Receiver receiver){this.receiver = receiver;}public void execute() {//通常会转调接受者对象的相应方法,让接受者来真正执行功能receiver.action();}
}public class Invoker { private Command command = null; public void setCommand(Command command) {this.command = command;} public void runCommand() {//调用命令对象的执行方法command.execute();}
}public class Receiver { public void action(){//真正执行命令操作的功能代码}
}public class Client { //示意,负责创建命令对象,并设定它的接受者 public void assemble(){//创建接受者Receiver receiver = new Receiver();//创建命令对象,设定它的接收者Command command = new ConcreteCommand(receiver);//创建Invoker,把命令对象设置进去Invoker invoker = new Invoker();invoker.setCommand(command);invoker.runCommand(command);}
}
《研磨设计模式》chap13 命令模式相关推荐
- 设计模式 之 命令模式
2019独角兽企业重金招聘Python工程师标准>>> 设计模式 之 命令模式 命令模式比较简单,不过多赘述 为什么需要命令模式 将"行为请求者"与"行 ...
- 研磨设计模式之 策略模式--转
http://www.uml.org.cn/sjms/201009092.asp 研磨设计模式之 策略模式 2010-09-09 作者:云飞龙行 来源:云飞龙行的blog 先感谢众多朋友的支持 ...
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...
- 23种设计模式之命令模式和策略模式的区别
文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...
- 研磨设计模式之外观模式(Facade)(解决方案)
3.2 解决方案 3.2.1 外观模式来解决 用来解决上述问题的一个合理的解决方案就是外观模式.那么什么是外观模式呢? (1)外观模式定义 这里先对两个词进行一下说明,一个是界面,一个是接口. 界 ...
- 行为型设计模式之命令模式
命令模式描述 官方解释 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作. 个人理解 将软件代码划分为三个方面:① 调用者(入口).② ...
- 研磨设计模式 之 组合模式(Composite) 3——跟着cc学设计系列
15.3 模式讲解 15.3.1 认识组合模式 (1)组合模式的目的 组合模式的目的是:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作. 实现这个目标的关键之处,是设计一 ...
- 设计模式之命令模式(Command)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式
点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章.本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(sin ...
- 设计模式复习-命令模式
#pragma once #include "stdafx.h" #include<set> #include<string> #include<io ...
最新文章
- Spring Cloud入门教程-Hystrix断路器实现容错和降级
- pytorch自动微分的几个例子
- js整形转成double_那么,来用 JS 画个黑洞吧!
- FAT文件系统原理详细介绍
- 《应用商务统计分析》前言
- VC2005 MFC静态文本框背景色设置
- 使用stm32驱动RC522读取IC卡
- OpenCV4图像处理算子不完全手册-入门篇(已完结)
- 新浪微博开放平台接入
- 2021-6-25 组态王与modbus rtu从机STM32精英开发板通信
- 深度系统安装移动硬盘启动_如何安装PE系统(移动硬盘) ?
- 第四届传智杯 小卡与质数(java实现)
- 学习Python的做笔记神器——Jupyter Notebook
- GDAL error: ‘NoneType‘ object has no attribute ‘GetGeoTransform‘
- MacOS Catalina Beta使用体验
- 哪里有纯免费的PPT模板下载网站?
- 门诊挂号c语言程序代码,C语言版医院管理系统
- spring注解之@PreDestroy的实现原理
- 开源代码分析技巧之三——老外如是说
- php unhtml包,JavaScript 版本的 PHP serialize/unse_js
热门文章
- websocket中发生数据丢失_tcp协议;websocket协议;同源策略和跨域
- 高度平衡二叉树的构建_平衡二叉树建立及其增删改查(JAVA)
- python phpstudy_GitHub - Writeup007/phpStudyBackDoor: phpStudy后门检测与利用工具,Python脚本,可一键 GetShell。...
- python生成报告_python生成测试报告
- python输入学号返回成绩_Python模拟登陆正方教务系统并抓取成绩单
- linux 普通用户crond,linux下普通用户的定时任务
- aix 5.3 安装oracle 10g r2,AIX 5.3 安装 Oracle 10g R2(64)
- 边缘数据中心2024年市场规模将超过130亿美元
- centos 开发php扩展,【PHP扩展】centos给PHP安装扩展
- ML:基于自定义数据集利用Logistic、梯度下降算法GD、LoR逻辑回归、Perceptron感知器、SVM支持向量机、LDA线性判别分析算法进行二分类预测(决策边界可视化)