atitit.设计模式(2) -----查询方式/ command 总结
atitit.设计模式(2) -----查询方式/ command 总结
5. 使用命令模式作为"CallBack"在面向对象系统中的替代。
1
2. Command模式类似于Interpreter模式.
2
1. 应用场景:
1. 代替一瓦if else
2. 建设api rpc风格的时候儿.
3. 菜单是Command模式的一个典型实例,
它可以充分体现该模式的价值.在菜单的设计中。菜单项知道应该在何时运行操作,可是并不知道将会调用哪个方法.我们通过应用Command模式可以将菜单项相应的方法调用作为參数传给菜单.
4. 上下文中运行客户代码
Command模式的另外一个使用方法是同意在服务的上下文中运行客户代码.服务常常在客户代码调用前和调用后运行.最后,除了控制方法运行的时机或者上下文之外,Command模式还能够提供钩子。同意可选的客户代码作为算法的一部分运行
5. 使用命令模式作为"CallBack"在面向对象系统中的替代。
1)"CallBack"讲的便是先将一个函数登记上。然后在以后调用此函数。
2)须要在不同的时间指定请求、将请求排队。一个命令对象和原先的请求发出者能够有不同的生命期。换言之,原先的请求发出者可能已经不在了,而命令 对象本身仍然是活动的。这时命令的接收者能够是在本地。也能够在网络的另外一个地址。命令对象能够在串形化之后传送到另外一台机器上去。
6. 3)系统须要支持命令的撤消(undo)。
命令对象能够把状态存储起来,等到client须要撤销命令所产生的效果时。能够调用undo()方法,把命令所产生的效果撤销掉。命令对象还能够提供redo()方法。以供client在须要时,再又一次实施命令效果。
7. 日志恢复
4)假设一个系统要将系统中全部的数据更新到日志里,以便在系统崩溃时,能够依据日志里读回全部的数据更新命令,又一次调用Execute()方法一条一条运行这些命令。从而恢复系统在崩溃前所做的数据更新。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. Command模式类似于Interpreter模式.
3. Command模式和职责链的差别
在这个层面上。Command模式和其是相竞争的。Command模式类似直接抛绣球,知道目的,可以最有效率。可是前提在设计编码阶段你必须知道你的目的地。Command模式和职责链的差别与Decorator和AOP拦截器的差别是类似的
參考
Java之命令模式(Command Pattern) - Devin Zhang - 博客园 (hteu 有 etc code
o725
版权声明:本文博主原创文章。博客,未经同意不得转载。
atitit.设计模式(2) -----查询方式/ command 总结的更多相关文章
- atitit.设计模式(2) -----查表模式/ command 总结
		
atitit.设计模式(2) -----查表模式/ command 总结 1. 应用场景: 1 1. 取代一瓦if else 1 2. 建设api rpc风格的时候儿. 1 3. 菜单是Command ...
 - atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换
		
atitit.设计模式(1)---职责链模式(chain of responsibility)最佳实践O7 日期转换 1. 需求:::日期转换 1 2. 可以选择的模式: 表格模式,责任链模式 1 3 ...
 - 乐在其中设计模式(C#) - 命令模式(Command Pattern)
		
原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...
 - Hibernate 查询方式(HQL/QBC/QBE)汇总
		
作为老牌的 ORM 框架,Hibernate 在推动数据库持久化层所做出的贡献有目共睹. 它所提供的数据查询方式也越来越丰富,从 SQL 到自创的 HQL,再到面向对象的标准化查询. 虽然查询方式有点 ...
 - Atitit 设计模式与算法,与流程的关系
		
Atitit 设计模式与算法,与流程的关系 1.1. 设计模式就是算法 就是流程,不同的方面看法不同,抽象方法不同而造成的假象. 软件就是由设计模式累积成的.也可以说算法累计成的.. ,而可以用Vis ...
 - Atitit 设计模式的本质思考】
		
Atitit 设计模式的本质思考] 1. 世界就是有模式构建的1 1.1. 多次模式与偶然模式1 1.2. 模式就是在一种场合下对某个问题的一个解决方案."1 1.3. 模式需要三样东西. ...
 - Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询
		
1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...
 - easyui datagride 两种查询方式
		
easyui datagride 两种查询方式function doReseach() { //$('#tt').datagrid('load', { // FixedCompany: $('.c_s ...
 - Hibernate的查询方式总结
		
Hibernate的查询方式大体有三种,分别是HQL QBC和SQL三种.在网上查阅一一些资料,做了一个简单的总结. 1. SQL sql 是面向数据库表查询,from 后面跟的是表名,where 后 ...
 
随机推荐
- 飘逸的python - yield简明教程
			
发现还有非常多人对yield不理解,云里雾里,于是试着用文字表述. 仅仅要函数含有yield语句,它就返回一个生成器.所以我们与其把其看成函数定义,不如看作是生成器定义.函数用return返回,而生成 ...
 - ubuntu下海信Hisense E920 usb连接不上的处理与adb的连接
			
解决lssub未能发现海信Hisense USB设置:选择 天翼宽带连接 如下所示: luogw@luogw-ThinkPad-Edge:~$ lsusb Bus 001 Device 002: ID ...
 - POJ 1325 ZOJ 1364 最小覆盖点集
			
题意:有A,B两台机器, 机器A 有 n个模式(0, 1, 2....n-1),同样机器B有m个模式, 两个机器一开始的模式都为0,有k个作业(id,x,y) 表示作业编号id, 该作业必须在A机器在 ...
 - 找工作笔试面试那些事儿(8)---常问的CC++基础题
			
这一部分是C/C++程序员在面试的时候会被问到的一些题目的汇总.来源于基本笔试面试书籍,可能有一部分题比较老,但是这也算是基础中的基础,就归纳归纳放上来了.大牛们看到一笑而过就好,普通人看看要是能补上 ...
 - Swift供选链接
			
函数是运行特定任务的代码自包括块. 给定一个函数名称标识, 当运行其任务时就能够用这个标识来进行"调用". Swift的统一的功能语法足够灵活来表达不论什么东西,不管是甚至没有參数 ...
 - loj1370(欧拉函数+线段树)
			
传送门:Bi-shoe and Phi-shoe 题意:给出多个n(1<=n<=1e6),求满足phi(x)>=n的最小的x之和. 分析:先预处理出1~1e6的欧拉函数,然后建立一颗 ...
 - File already exists: filesystem '/path/file', transaction svn常见错误解决方法
			
前言 多人任务基本都会用到SVN,于是提交的时候如果不先更新在提交或者操作顺序不对,会经常出现错误,其中File already exists: filesystem这个就是个常见问题,上网找了半天没 ...
 - ORACLE中%TYPE和%ROWTYPE的使用
			
 1 %TYPE说明 为了使一个变量的数据类型与还有一个已经定义了的变量(尤其是表的某一列)的数据类型相一致,Oracle提供了%TYPE定义方式.当被參照的那个变量的数据类型改变了之后,这个新定 ...
 - Wix学习整理(3)——关于Windows Installer和MSI
			
原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和 ...
 - WebGL自学教程——WebGL演示样例:開始
			
最终開始WebGL的演示样例了,...... 開始 使用WebGL的步骤,非常easy: 1. 获得WebGL的渲染环境(也叫渲染上下文). 2. 发挥你的想象力,利用<WebGL參考手冊> ...