Command Pattern的简单介绍
Command pattern 的角色有:Command(抽象命令)、ConcreteCommand(具体命令) 、Invoker(传达命令者) 、receiver(接收命令者)Client(客户类,想当于测试类);
//代码如下:
package com.qls.commandPattern3;
/**背景介绍:
* 泗溪村大学生村官欧阳凤收到清溪乡政府的一份文件。此文件主要要求大力发展当地的乡村旅游,特别是
* 春季的油菜花旅游。
* 欧阳凤收到文件指示后,便召集全村村民在村委会向村民传达了清溪乡政府的发展乡村旅游的指示,希望能
* 得到广大群众的支持。
* 上面的情景抽象出来就是一个命令模式。
* 其中清溪乡政府的一份文件相当于Command,
* 发展乡村旅游相当于此文件中的一个具体命令相当于:ConcreteCommand
* 大学生村官欧阳凤相当于传达者(Invoker)
* 泗溪村的全体村民相当于接受者(Receiver)
* 而这个Client类,便相当于一个测试类。在命令模式成为Client角色(也就是客户角色)没有实质作用。
* @author 秦林森
*
*/
//定义清溪乡政府的文件:File。也就是命令模式中的Command接口
interface File{
void execute();//这份文件中要求做的事。
}
//定义这份文件中关于发展乡村旅游的具体命令。也就是命令模式中的ConcreteCommand类
class ConcreteFile implements File{
/**
* 定义文件的接受者Masses
*
*/
private Masses masses;
/**
* 定义以masses为参数的构造方法
*/
public ConcreteFile(Masses masses) {
this.masses = masses;
}
@Override
public void execute() {
// TODO Auto-generated method stub
masses.action();
}
}
//定义大学生村官欧阳凤。也就是命令模式中的Invoker类
class Ouyangfeng{
/**
* 定义一个File的成员变量
*/
private File file;
/**
* 定义一个以file为变量的构造方法。
* @param file
*/
public Ouyangfeng(File file) {
this.file = file;
}
public void action(){
file.execute();
}
}
//定义广大的群众。也就是命令模式中的Receiver类
class Masses{
public Masses() {
// TODO Auto-generated constructor stub
}
public void action(){
System.out.println("坚决支持发展乡村旅游,支持村官欧阳凤");
}
}
//Client类,相当于命令模式中的Client类。
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Masses masses=new Masses();
File file=new ConcreteFile(masses);
Ouyangfeng ouyangfeng=new Ouyangfeng(file);
ouyangfeng.action();
}
}/*
Output:
坚决支持发展乡村旅游,支持村官欧阳凤
*///:~
Command Pattern的简单介绍的更多相关文章
- [Design Pattern] Command Pattern 简单案例
Command Pattern, 即命令模式,把一个命令包裹在一个对象里面,将命令对象传递给命令的执行方,属于行为类的设计模式 下面是命令模式的一个简单案例. Stock 代表被操作的对象.Order ...
- WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍
WPF自学入门(十一)WPF MVVM模式Command命令 在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式 ...
- shell语法简单介绍
一.基本的语法 1.1.shell文件开头 shell文件必须以以下的行開始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的參数是用来运行该文件的程序.在这个样例中我们 ...
- 设计模式 - 命令模式(command pattern) 具体解释
命令模式(command pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 命令模式(command pattern) : 将请求封装成对 ...
- Tcl 简单介绍及特性
[简单介绍|特性] l 简单介绍 Tcl是一门产生于80年代末的语言,和Python一样,她是用c开发出来的.假设说C/Java/C++/C#为编译型语言的话,那么Python.Perl和Tcl就是 ...
- Android 驱动(二) IIC简单介绍
一. I2C简单介绍 I2C(Inter-Integrated Circuit)总线是一种由 Philips 公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C 总线最基本的长处就是简单性 ...
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...
- C#设计模式之十五命令模式(Command Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第二个模式,该模式是[命令模式],又称为行动(Action)模式或交易(Transaction)模式,英文名称是:Command P ...
- Core文件简单介绍及生成设置方法
Core文件简单介绍及生成设置方法 Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试.当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文 ...
随机推荐
- nuxt.config有关router配置
这里只说明一个属性,其他属性移步官方文档 https://zh.nuxtjs.org/api/configuration-router extendRoutes 官方说明: 你可以通过 exten ...
- ethereum(以太坊)(四)--值传递与引用传递
contract Person { string public _name; function Person() { _name = "liyuechun"; } function ...
- JZOJ| 5910. DuLiu
Description LF是毒瘤出题人中AK IOI2019,不屑于参加NOI的唯一的人.他对人说话,总是满口垃圾题目者也,教人半懂不懂的.因为他姓李,别人便从QQ群上的“毒瘤李F ...
- sql语句(Oracle和sqlserver)
查询表的首句:(Oracle) select * from (select a.*, rownum as rn from tab_name a order by col )where rn = 1 o ...
- Python入门必知的几个点
Python是Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种.如果你听说过TIOB ...
- Django自带后台管理配置
Django自带后台管理的配置 创建项目和应用 修改配置文件 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql' ...
- Skyscrapers Covered in Solar Pancels【太阳能电池板覆盖的摩天大楼】
Skyscrapers Covered in Solar Panels An office tower on Miller Stree in Manchester is completely cove ...
- 利用pandas和numpy计算表中每一列的均值
import numpy as np import pandas as pd df = pd.DataFrame({'var1':np.random.rand(100), #生成100个0到1之间的随 ...
- 笔记-flask基础操作
笔记-flask基础操作 1. 前言 本文为flask基础学习及操作笔记,主要内容为flask基础操作及相关代码. 2. 开发环境配置 2.1. 编译环境准备 安装相关Lib ...
- TouTiao开源项目 分析笔记18 视频详情页面
1.效果预览 1.1.需要做到的真实效果 1.2.触发的点击事件 在MediaArticleVideoViewBinder的每一个item点击事件中: VideoContentActivity.lau ...