命令模式,笔者一直以为当我们开发的过程中基本上很难用到,直到维护阶段或者重构阶段,我们会发现有些撤销命令和追加命令比较频繁时,自然而然就用到命令模式。

先看下类图

大话设计模式-类图

简单说下类图,最开始笔者看大话设计模式的时候也不是很喜欢看类图,主要原因是看不懂,后来当笔者第一次看完设计模式后,才真正意义上的理解类图。

在现在的工作中笔者查看设计模式时,基本上都是直接看类图,不会再去看demo。所以在这里笔者鼓励大家多看类图,并明白类图的意义,也不用过于刻意去看,

当大家明白一个设计模式后,再去重新看下类图,相信大家会有收获的。好了,先看下笔者的demo。

/**
* 烧烤师傅
*/
public class Barbecue { public void makeMutton() {
System.out.println("烤羊肉串");
} public void makeChicken() {
System.out.println("考鸡肉串");
}
}
/**
* 命令抽象父类
*/
public abstract class Commond { private Barbecue barbecue; public Commond(Barbecue barbecue) {
super();
this.barbecue = barbecue;
} public abstract void excuteCommond(); public Barbecue getBarbecue() {
return barbecue;
} public void setBarbecue(Barbecue barbecue) {
this.barbecue = barbecue;
}
}
/**
* 烤鸡翅命令
*/
public class ChickenCommond extends Commond{ public ChickenCommond(Barbecue barbecue) {
super(barbecue);
}
@Override
public void excuteCommond() {
super.getBarbecue().makeChicken();
} }
/**
* 烤羊腿命令
*/
public class MuttonCommod extends Commond{ public MuttonCommod(Barbecue barbecue) {
super(barbecue);
}
@Override
public void excuteCommond() {
super.getBarbecue().makeMutton();
} }
/**
* 服务员
*/
public class Waiter { private List<Commond> commonds = new ArrayList<>(); public void addCommond(Commond commond) {
// TODO 可以做很多事情 记日志等等
commonds.add(commond);
} public void removeCommond(Commond commond) {
// TODO 可以做很多事情 记日志等等
commonds.remove(commond);
} public void Notify() {
for (Commond commond : commonds) {
commond.excuteCommond();
}
}
}
/**
* 客户端
*/
public class Test { public static void main(String[] args) {
Barbecue barbecue = new Barbecue();
Commond commond = new ChickenCommond(barbecue);
Waiter waiter = new Waiter();
waiter.addCommond(commond);
waiter.Notify();
}
}

运行结果如下

考鸡肉串

大话设计模式一共24个设计模式,笔者坚持每天更新一篇,有时工作忙没能及时更新。大话设计模式更新完毕,笔者会更新JVM虚拟机的相关知识,当然也是以笔者切身感受去写。

以上,希望能帮助学习命令模式的小伙伴。

java 之 命令模式(大话设计模式)的更多相关文章

  1. OOP设计模式[JAVA]——04命令模式

    命令模式 命令模式的意图 命令模式属于对象的行为模式.别名又叫:Action或Transaction. 命令模式把一个请求或者操作封装到一个对象中.命令模式允许系统使用不同的请求把客户端参数化,对请求 ...

  2. Spring IOC 方式结合TESTGN测试用例,测试简单java的命令模式

    java命令模式: 可以命令("请求")封装成一个对象,一个命令对象通过在特定的接收着上绑定一组动作来封装一个请求.命令对象直接把执行动作和接收者包进对象中,只对外暴露出执行方法的 ...

  3. java 之 适配器模式(大话设计模式)

    适配器模式,笔者不是很推荐在项目初期阶段使用,在笔者看来这个设计模式就是套接了一层,从而达到能够迎合现有的外部接口规范. 先来简单的看下类图: 大话设计模式-类图 这个模式理解起来非常简单,A→B因为 ...

  4. java 之 单例模式(大话设计模式)

    笔者记得去面试时曾被问起这个模式,当时还没有看过设计模式,对设计模式基本上一无所知,不过可以肯定的是笔者用过单例模式.当时回答的风马牛不相及,很尴尬. 也是从那时起,开始学习设计模式.今天所说的就是单 ...

  5. Java之命令模式(Command Pattern)

    转自:http://www.cnblogs.com/devinzhang/archive/2012/01/06/2315235.html 1.概念 将来自客户端的请求传入一个对象,从而使你可用不同的请 ...

  6. java 之 代理模式(大话设计模式)

    java代理模式顾名思义,就类似于大学,我想和冰可乐,可是我又在玩游戏,于是我让我的室友帮我把可乐带回来,简单的来说我的室友就是代理,而买可乐就是需要做的行为.这是笔者理解的代理模式 大话设计模式-类 ...

  7. 行为型-命令模式(Command)

    装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或者排气扇.在购买开关时,我们并不知道它将来到底用于控制什么电器,也就是说,开关与电灯.排气扇并无直接关系,一 ...

  8. 大话设计模式(C#)

    还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 问个问题: 如何写出高质量的代码?灵活,可扩展,易读,易维护,可重构,可复用. ...

  9. iOS开发-命令模式

    命令模式算是设计模式中比较简单的,最常见的例子是工作任务安排下来进行编程,如果工作任务不需要完成,我们可以取消我们之前完成的代码,也可以理解为回滚撤销操作.这里面涉及到命令模式中的两个对象,一个是动作 ...

随机推荐

  1. 5.volatile的应用

    volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的"可见性".可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值.如果v ...

  2. IOS学习——iphone X的适配

    说实话,对于一个刚入门iOS两个月的新手而言,在拿到这个任务的时候整个人都是懵逼的,怎么做适配?哪些地方需要适配?该怎么做?一个个问题搞得头都大了. 首先,啥都不管,先在iPhone X上运行起来看看 ...

  3. Android 开发笔记___SD卡基本操作__图片读取写入

    package com.example.alimjan.hello_world.Utils; import android.graphics.Bitmap; import android.graphi ...

  4. JAVA 后台SSM框架接收安卓端的json数据

    最近项目上与安卓端做JSON数据交互,使用的SSM框架,刚开始的时候感觉很简单,想着不就是把安卓端的JSON数据封装为Bean类对象吗? 于是就这样写了 可是这样一直报400,百度原因是因为请求url ...

  5. RPA(Robotic Process Automation)的概要介绍

    最近因为公司业务的需要,开始关注RPA的内容,奈何国内相关的信息太少,只能硬着头皮啃英文了. 下面记录的内容作为学习笔记,有不对的地方请大家指教. 首先RPA(Robotic Process Auto ...

  6. oracle 归档模式开启后数据库宕机解决过程

    首先按照网友说的shutdown immediately,结果hang了半个小时也么反应. 然后检查日志,全盘搜索.trc,发现 (D:\app\oracle\diag\rdbms\cms1u\cms ...

  7. 都说 WebP 厉害,究竟厉害在哪里?

    之前在< WebP 的前世今生 >一文中,介绍了 WebP 图片格式是由 Google 基于 VP8 视频编码格式研发的,同时提供有损压缩和无损压缩两种格式,那么今天就来看看 WebP 有 ...

  8. 五:Token问题和使用详解

    什么是Token? Token可以理解为令牌,服务端通过验证Token,来判断你是否有这个操作的权限.Token的重要特性是有效性,一般Token只在一定时间范围内有效.下图是登录模块的一个流程图,展 ...

  9. RabbitMQ之比较好的资料

    http://mysql.taobao.org/index.php/Rabbitmq http://www.cnblogs.com/me-sa/archive/2012/10/17/rabbitmq_ ...

  10. MarkdownPad2测试

    IO利用率统计 SAS SSD MegaRaid