23设计模式之命令模式(Command)
来源:互联网 发布:学软件软件好的学校 编辑:程序博客网 时间:2024/06/06 01:57
返回目录
1 概述
Command属于行为型模式中的一种,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
2 适用性
- 抽象出待执行的动作以参数化某对象。
- 在不同的时刻指定、排列和执行请求。
- 支持取消操作。
- 支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍。
- 用构建在原语操作上的高层操作构造一个系统。
3 参与者
- Command:声明执行操作的接口。
- ConcreteCommand:将一个接收者对象绑定于一个动作。调用接收者相应的操作,以实现Execute。
- Client:创建一个具体命令对象并设定它的接收者。
- Invoker:要求该命令执行这个请求。
- Receiver:知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。
4 类图
5 代码实现
//// YJInterpreter.swift// DesignPattern//// CSDN:http://blog.csdn.net/y550918116j// GitHub:https://github.com/937447974/Blog//// Created by yangjun on 15/11/27.// Copyright © 2015年 阳君. All rights reserved.//import Cocoa/// 声明一个抽象的解释操作,这个协议为抽象语法树中所有的节点所共享private protocol ExpressionProtocol { func interpret(context: Context)}private class AdvanceExpression: ExpressionProtocol { func interpret(context: Context){ print("\(context.content) 这是高级解析器!") }}private class SimpleExpression: ExpressionProtocol { func interpret(context: Context) { print("\(context.content) 这是普通解析器!") }}// MARK: -/// Context(上下文)包含解释器之外的一些全局信息private class Context { /// 全局信息 var content:String = "" /// 解释器数组 var list: [ExpressionProtocol] = [] // MARK: 增加 func add(expression: ExpressionProtocol) { self.list.append(expression) }}// MARK: -/// 解释器模式class YJInterpreter: YJTestProtocol { func test() { let ctx = Context() ctx.content = "Context" ctx.add(AdvanceExpression()) ctx.add(SimpleExpression()) for ex in ctx.list { ex.interpret(ctx) } }}
其他
源代码
Framework
文档修改记录
版权所有
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog
0 0
- 23设计模式之命令模式(Command)
- 23设计模式之命令模式(Command)
- 设计模式之Command(命令)
- 设计模式之Command命令模式
- 设计模式之Command - 命令模式
- Java设计模式-之Command命令模式
- 设计模式 之 命令(command)模式
- 设计模式之Command - 命令模式
- 设计模式之Command(命令模式)
- 设计模式之(十六)命令模式Command
- 设计模式之Command(命令模式)
- 设计模式之命令模式(Command Pattern)
- 【设计模式】之 Command 命令模式
- 浅学设计模式之命令<command>模式
- 【设计模式】之命令模式(Command)
- 设计模式之 — Command命令模式
- java设计模式之命令模式Command
- 浅学设计模式之命令<command>模式
- Nagios and NSCA installation
- 23设计模式之解释器模式(Interpreter)
- C++类的构造函数、析构函数
- LRUCache原理及HashMap LinkedHashMap内部实现原理
- HashMap Hashtable区别
- 23设计模式之命令模式(Command)
- ScrollView嵌套ListView只显示一行解决方案
- 关于Java多线程Thread的join用法
- 搭建ionic环境创建新的工程
- 23设计模式之模板方法(TemplateMethod)
- 将博客搬至CSDN
- Java 中InputStream与Reader的区别
- java如何获取MySql数据库的列名,类型等信息
- 23设计模式之目录