命令模式--command模式


首先来一个命令的接口:

package mode.command;/*** * 定义一个命令接口,其中有一个抽象的执行方法,参数人命令接收器* * */
public interface Command {public void execute(CommandReceiver commandReceiver);
}

定义一个命令接受者的接口:

package mode.command;/*** * 命令接收类,包涵要执行的各种动作* * * */
public interface CommandReceiver {public void doSometingA();public void doSomethingB();
}

两个Command接口的实现类:

package mode.command;public class CommandA implements Command {@Overridepublic void execute(CommandReceiver commandReceiver) {commandReceiver.doSometingA();}}

package mode.command;public class CommandB implements Command {@Overridepublic void execute(CommandReceiver commandReceiver) {commandReceiver.doSomethingB();}}

定义一个命令接收者的实现类,这里使用单例模式来设计这个类

package mode.command;public class CommandReceiverImplSingliton implements CommandReceiver {private static CommandReceiverImplSingliton commandReceiverImplSingliton;public static CommandReceiverImplSingliton getCommandSingliton() {if (null == commandReceiverImplSingliton) {commandReceiverImplSingliton = new CommandReceiverImplSingliton();return commandReceiverImplSingliton;} else {return commandReceiverImplSingliton;}}@Overridepublic void doSometingA() {System.out.println("dodoododododododoodoAAAAA");}@Overridepublic void doSomethingB() {System.out.println("dododoodododoodododoBBBBB");}
}


创建命令执行器:

package mode.command;public class CommandExecutor {public void execute(Command command) {command.execute(CommandReceiverImplSingliton.getCommandSingliton());}
}


用client类来测试:

package mode.command;public class Client {public static void main(String[] args) {Command commandA = new CommandA();Command commandB = new CommandB();CommandExecutor executor = new CommandExecutor();executor.execute(commandA);executor.execute(commandB);  }
}


转载于:https://www.cnblogs.com/qzmpc/p/6339576.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uploadify scriptData参数无法传参的问题

最近需要使用到uploadify,需要向后台传递参数,使用script最多只能够传递一个参数,当然也可以通过合并参数然后再在服务器段拆分参数的方法来传递多个参数,而uploadify插件提供的scriptData却怎么都无法使用,网上查阅了…

安装iproute2

yum install -y gcc bison flex#tar -xzf iproute2-3.17.0.tar.gz#cd iproute2-3.17.0#sed -i /^TARGETS/sarpdg misc/Makefile#make SBINDIR/sbin#make SBINDIR/sbin install参考资料:http://blog.sina.com.cn/s/blog_5f5716580100rvop.htmlhttps://www.kernel.or…

「北京」京东 JD.COM 招聘中/高级前端工程师

职位描述: 1、计算机或相关专业专科以上学历,2年以上网站前端开发经验,电子商务相关从业经验优先;2、精通各种Web前端技术,对符合web标准的网站重构有丰富经验,有成功作品;3、理解并掌握JavaScr…

前端上传组件Plupload使用指南

我之前写过一篇文章《文件上传利器SWFUpload使用指南》,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SWFUpload显然就有点过时了,毕竟html5原生的就给我们提供了文件…

HTML5简易在线画图工具

HTML5简易在线画图工具 原文:HTML5简易在线画图工具继上次学习了HTML5的路径画圆做了动态时钟、异次元空间的反转做了运动的太阳系,这两天将画线、画圆、填充等知识点结合起来做了一个简易的在线画图工具: 查看DEMO:HTML5简易在线画图工具 功…

uboot中系统时钟初始化函数:system_clock_init

时钟初始化函数内容如下: /** system_clock_init: Initialize core clock and bus clock.* void system_clock_init(void)*/ system_clock_init:ldr r0, ELFIN_CLOCK_POWER_BASE 0xe0100000/* Set Mux to FIN */ldr r1, 0x0str r1, [r0, #CLK_SRC0_OFFSET]ldr r1, …

【excel技巧读书笔记001】清除打开过的文件记录

我们在工作的时候经常打开工作薄,这些工作薄都会在最近使用的工作薄列表看到,如果不希望别人看到自己打开过的记录,可以将最近使用的工作薄列表清空。具体步骤如下:1.【文件】-【选项】-【高级】-【显示】显示此数目的最近使用文档…

写一个函数,使给定的一个二维数组(3×3)转置,即行列互换

写一个函数,使给定的一个二维数组(33)转置,即行列互换 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 163 Solved: 120[Submit][Status][Web Board]Description 写一个函数,使给定的一个二维…

快速开发系统之前台页面 ---- NO1----登录页面

2019独角兽企业重金招聘Python工程师标准>>> 快速开发系统之前台页面 ---- NO1----登录页面 <% page language"java" contentType"text/html; charsetutf-8"pageEncoding"utf-8"%> <!DOCTYPE html> <html lang"z…

微信公众平台用户分组管理开发文档详解

本文转载至 http://www.5icool.org/a/201402/a4292.html 时间&#xff1a;2014-02-09 来源&#xff1a;互联网 开发者可以使用接口&#xff0c;对公众平台的分组进行查询、创建、修改操作&#xff0c;也可以使用接口在需要时移动用户到某个分组。 创建分组 一个公众账号&…

HP服务器F10 Function Disabled,无法使用F10安装操作系统

HP惠普服务器正确安装操作系统的方法是使用F10引导安装&#xff0c;可以自动安装操作系统&#xff0c;与硬件结合的更好&#xff0c;而且安装完成后&#xff0c;如果是windows操作系统&#xff0c;可以有HP管理页。某次&#xff0c;在使用F10引导安装操作系统的时候&#xff0c…

apt-get for ubuntu 工具简介

先介绍几个和apt-get相关的目录: /var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包. /var/cache/apt/archives 目录是在用 apt-get install 安装软件时&#xff0c…

【VMCloud云平台】SCAP(一)规划

完成了System Center中的悍将SCO基础篇后&#xff0c;咱们来聊聊SCAP&#xff0c;很多人说SCAP是一个简单的组件&#xff0c;何必单独拿出来聊呢&#xff1f;我倒是认为不然&#xff0c;作为System Center中为数不多的主打Portal类型的组件&#xff08;除开组件的Web Console就…

内核配置与编译——Makefile文件分析

以下内容源于朱有鹏嵌入式课程的学习&#xff0c;如有侵权&#xff0c;请告知删除。 &#xff08;1&#xff09;Makefile中刚开始定义了kernel的内核版本号。这个版本号在模块化驱动安装时会需要用到。 &#xff08;2&#xff09;在make编译内核时&#xff0c;可以通过命令行…

android学习日记12--布局管理器

1、概述  布局管理器的用途&#xff1a;  a、可以更好的管理组件;  b、通过使用布局管理器&#xff0c;Android应用程序可以做到平台无关性 布局管理器都是ViewGroup的子类&#xff0c;所有可充当容器的父类都是ViewGroup&#xff0c;而ViewGroup也是View的子类 下面分别…

PXE装机+kickstart无人值守安装

搭建PXE远程安装服务器&#xff0c;本例集成了TFTP服务、DHCP服务&#xff0c;能够向客户机发送PXE引导程序&#xff0c;内核&#xff0c;启动菜单等。1.准备RHEL6安装源&#xff0c;网络安装源一般通过HTTP&#xff0c;FTP协议发布&#xff0c;另外页支撑NFS协议。采用FTP协议…

sqlserver

查看表结构 sp_columns tablename; sp_help tablename; DataView.RowFilter筛选DataTable中的数据 /定义一个DataView &#xff0c;得到一个全部职员的视图DataView dataView1 DbHelperSQL.QueryDataView(sql);//过滤得到一个只显示男职员的视图 dataView1.RowFilter "…

内核通识——内核中架构相关代码简介

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、内核代码基本分为3块 &#xff08;1&#xff09;arch目录 本目录下全是cpu架构有关的代码。本文说的就是这个目录中的内容。 &#xff08;2&#xff09;drivers目录 本目录下全是硬件的驱动。 &…

java   cxf实现webservice接口方式之不依赖spring

今天需要用cxf来实现webserive接口的需求。网上搜了搜资料基本上都是cxf结合spring的方式。整理了一份不依赖spirng的方式。学习学习 第一步&#xff1a;导入需要的jar包第二步&#xff1a;编写接口类&#xff1a;package com.tydic.test.service.cxf;public interface HelloT…

一道关于比赛胜负的Sql查询题目

以前做过一道题目&#xff0c;一直没有来得及总结下来。贴图&#xff1a; 记得以前曾经找到了两种方法&#xff0c;今天试了一下&#xff0c;还是可以的&#xff0c;贴出过程&#xff1a; 下面是具体的查询方法&#xff1a; 原来放的是图片,今天又练习了一下,附代码: 1 create …