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 文 ...
随机推荐
- 使用union all 命令之后如何对hive表格进行去重
业务场景大概是这样的,这里由两个hive表格,tableA 和 tableB, 格式内容都是这样的: uid cate1 cate2 在hive QL中,我们知道union有着自动去重的功能,但是那是 ...
- qt5.10.1编译记录
qt版本更新比较快,不知道选哪个版本合适,故选择一个较新版本的. 平台imx6 + linux4.1.16 + qt5.10.1 采用明远智睿提供的编译器:fsl-imx-fb-g ...
- auto用法
在C++11中,如果编译器在定义一个变量的时候可以推断出变量的类型,不用写变量的类型,你只需写auto即可. 第一种用法:自动推到内置类型 int x = 100; //C++ 11 auto x = ...
- Spark 源码阅读——任务提交过程
当我们在使用spark编写mr作业是,最后都要涉及到调用reduce,foreach或者是count这类action来触发作业的提交,所以,当我们查看这些方法的源码时,发现底层都调用了SparkCon ...
- html_parser.py
coding=UTF-8 # HTML解释器 import re from bs4 import BeautifulSoup class htmlParser(): def parse(self, u ...
- Android 第三方库RxLifecycle使用
1.简单介绍RxLifecycle 1.1.使用原因. 在使用rxjava的时候,如果没有及时解除订阅,在退出activity的时候,异步线程还在执行. 对activity还存在引用,此时就会产生内存 ...
- 1,版本控制git--仓库管理
再开始这个话题之前,让我想起了一件很痛苦的事情,在我大学写毕业论文的时候,我当时的文件是这样保存的 毕业论文_初稿.doc 毕业论文_修改1.doc 毕业论文_修改2.doc 毕业论文_修改3.d ...
- CSS继承特殊
继承 CSS的某些样式具有继承性.继承是一种规则,它允许样式不仅作用于某个特定html标签元素,而且应用于其后代 如:在p中的所有字体都为红色 p{color:red;} <p ...
- VS Extension+NVelocity系列(一)——构建一个简单的NVelocity解析环境
一.前言 本节我们将实际实现一个简单的NVelocity解析环境,以便为以后的实例做一些基本工作,虽然NVelocity如何使用已经属于老掉牙的话题,但我只能专门挑出来一章来做铺垫.人生就是这样无奈啊 ...
- 《Cracking the Coding Interview》——第2章:链表——题目4
2014-03-18 02:27 题目:将一个单链表按照一个值X分为两部分,小于X的部分放在大于等于X的部分之前. 解法:按照值和X的大小,分链表为两条链表,然后连起来成一条. 代码: // 2.4 ...