Java-马士兵设计模式学习笔记-命令模式

一、概述

命令模式

二、代码

1.Client.java

1 public class Client {
2
3     public void request(Server server){
4         server.addCommand(new TextCommand());
5         server.addCommand(new ImageCommand());
6         server.doSomething();
7     }
8 }

2.Server.java

 1 public class Server {
 2
 3     private List<Command> commands = new ArrayList<Command>();
 4
 5     public void doSomething() {
 6         for(Command c : commands){
 7             c.execute();
 8         }
 9     }
10
11     public void addCommand(Command command) {
12         commands.add(command);
13     }
14
15 }

3.Command.java

1 public abstract class Command {
2
3     public abstract void execute();
4     public abstract void unDo();
5
6 }

4.TextCommand.java

 1 public class TextCommand extends Command {
 2
 3     @Override
 4     public void execute() {
 5         System.out.println("TextCommand...........");
 6     }
 7
 8     @Override
 9     public void unDo() {
10         // 涉及到操作的历史记录
11     }
12
13 }

5.ImageCommand.java

 1 public class ImageCommand extends Command {
 2
 3     @Override
 4     public void execute() {
 5         System.out.println("ImageCommand...........");
 6     }
 7
 8     @Override
 9     public void unDo() {
10         // 涉及到操作的历史记录
11     }
12
13 }

6.Test.java

1 public class Test {
2
3     @org.junit.Test
4     public void test(){
5         Client c = new Client();
6         c.request(new Server());
7     }
8
9 }

三、运行结果

时间: 2024-12-14 03:59:00

Java-马士兵设计模式学习笔记-命令模式的相关文章

Java——马士兵教程学习笔记

Java简介 1. Java的跨平台:一次编译,随处执行.——Java虚拟机的存在. 2. Java是解释型的语言 编译型:C/C++,直接编译成操作系统可执行的文件的格式(如Windows的可执行文件为.exe文件),不经过第二次 解释型:Java,Java先编译成自己的可执行文件的格式.class,然后JVM再对.class文件进行一行行解释,解释为各个平台的可执行的格式.一行一行解释地执行. 3. bin目录下是可执行的二进制文件 4. path:windows喜用执行命令时要搜寻的路径

Java-马士兵设计模式学习笔记-桥接模式

一.概述 1.桥接模式的应用情况:(1)两个维度扩展(2)排列组合 二.代码 1.Gift.java 1 public class Gift { 2 3 protected GiftImpl giftImpl; 4 } 2.GiftImpl.java 1 public class GiftImpl { 2 3 } 3.WarmGift.java 1 public class WarmGift extends Gift { 2 3 public WarmGift(GiftImpl giftImpl

设计模式学习笔记--命令模式

1 using System; 2 3 namespace Command 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/31 20:21:09 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// Receiver说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public class Receive

《Head First 设计模式》学习笔记——命令模式

在软件系统,"行为请求者"与"行为实施者"通常存在一个"紧耦合".但在某些场合,比方要对行为进行"记录.撤销/重做.事务"等处理,这样的无法抵御变化的紧耦合是不合适的.在这样的情况下.怎样将"行为请求者"与"行为实现者"解耦?将一组行为抽象为对象,实现二者之间的松耦合.这就是命令模式(Command Pattern)----题记 设计模式 命令模式:将"请求"封装成对

设计模式学习笔记--外观模式

好久没写设计模式的blog了,这次重新回来填坑,先找一个最简单但是却最常用的设计模式来学习,外观模式.其实说是一个设计模式,其实我们在实际的编程中无时无刻不在用外观模式,可以说这个设计模式已经渗透到编程的各个方便,可能我们自己没感觉出来罢了. 一.外观模式的定义 先来看一下外观模式的定义: 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层的接口,这个接口使得这一系列子系统更加容易使用. 简单解释一下,所谓外观模式,就是在我们设计系统的时候,将若干个子系统的功

设计模式学习之命令模式

模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活. 命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求.这就是命令模式的模式动机. 模式定义 命令模式(Command Pattern):将一个请求

设计模式学习笔记-工厂模式

一.概述 定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法(Factory Method)使一个类的实例化延迟到其子类: 2.模式中的角色 Product(Map):定义工厂方法所创建的对象的接口. ConcreteProduct(BaiduMap.GaodeMap):具体Product,实现Product接口. Creator(IMapFactory):声明工厂方法,该方法返回一个Product类型的对象. ConcreteCreator(BaiduMapFactory.Gaod

设计模式学习笔记-桥接模式

一.概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 二.模式中的角色 Abstraction:定义抽象类的接口:维护一个指向Implementor类型对象的指针: RefinedAbstraction:扩充由Abstraction定义的接口: Implementor:定义具体行为,具体特征的应用接口: ConcreteImplementor:实现Implementor. 三.UML类图 四.代码实现 4.1 桥接模式的实现代码 /// <summary> /// 实现 /// &

设计模式学习笔记-建造者模式

一.概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示: 二.模式中的角色 Builder:为创建一个Product对象的各个部件指定抽象接口: ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件:定义并明确它所创建的表示:提供一个检索产品的接口: Director:构造一个使用Builder接口的对象: Product:表示被构造的复杂对象,ConcreteBuilder创建该产品的内部表示并定义它的装配过程:包含定义组成部件的类,