站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
命令模式
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
'''命令模式''',PHP的命令模式相当于程序中的[[回调]]([[callback]])。回调通常使用一个函数[[指针]]或[[数据结构]]如[[PHP]]中的[[字符串]]和[[数组]]实现,Command是在一个方法调用之上的抽象,它吸收了所有面向对象的好处:合成、继承和处理。命令模式是封装一个通用操作的机制。 ==实例== 使用Command存储用户行为链,以支持撤销和重做操作。 注意PHP 5.3函数编程能力(闭包)可以被当做Command模式的一个本地实现,但为每一个命令层次结构使用抽象数据类型有助于类型安全。 PHP设计模式中的命令模式 在这个模式中,Invoker(调用者)知道传递给它的Command,无需依赖于真实的ConcreteCommand(具体的命令)实现,解决了通过配置进行方法调用相关的问题,如UI控件按钮和菜单等引用一个Command,它们的行为是通过通用的ConcreteCommand实例呈现的。 参与者: ◆Command(命令):在一个方法调用之上定义一个抽象; ◆ConcreteCommand(具体的命令):一个操作的实现; ◆Invoker(调用者):引用Command实例作为它可用的操作。 下面的代码展示了Validator组件作为Command对象实现的示例: <pre> /** * The Command abstraction. * In this case the implementation must return a result, * sometimes it only has side effects. */ interface Validator { /** * The method could have any parameters. * @param mixed * @return boolean */ public function isValid($value); } /** * ConcreteCommand. */ class MoreThanZeroValidator implements Validator { public function isValid($value) { return $value > 0; } } /** * ConcreteCommand. */ class EvenValidator implements Validator { public function isValid($value) { return $value % 2 == 0; } } /** * The Invoker. An implementation could store more than one * Validator if needed. */ class ArrayProcessor { protected $_rule; public function __construct (Validator $rule) { $this->_rule = $rule; } public function process(array $numbers) { foreach ($numbers as $n) { if ($this->_rule->IsValid($n)) { echo $n, "\n"; } } } } // Client code $processor = new ArrayProcessor(new EvenValidator()); $processor->process(array(1, 20, 18, 5, 0, 31, 42)); </pre> ==PHP设计模式中的命令模式的一些注意事项== ◆方法调用中的某些参数可以在构造ConcreteCommand时提供,有效地局部套用(currying)原始函数; ◆一个Command可以被看作是一个非常简单的只有一个方法的策略(Strategy),重点放在对象的操作上; ◆ConcreteCommands也要组织它们需要的每一个资源,以实现它们的目标,主要是行为的Receiver(接受者),它们调用方法执行一个Command; ◆复合模式,装饰模式和其它模式都可以和命令模式组合,获得更多的Command,装饰Command等等。 ==相关条目== *[[C]] *[[C++]] *[[JAVA]] ==参考来源== *[http://developer.51cto.com/art/201004/194011.htm 参考资料一] [[category:程序设计语言|M]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)