摘要:概念将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于行为请求者与行为实现者解耦,可实现二者之间的松耦合,以便适应变化。角色命令在一个方法调用之上定义一个抽象具体的命令一个操作的实现调用者引用实例作为它可用的操作。
概念
将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。
角色Command(命令):在一个方法调用之上定义一个抽象;
ConcreteCommand(具体的命令):一个操作的实现;
Invoker(调用者):引用Command实例作为它可用的操作。
代码代码如下:
0;
}
}
/**
* Class ConcreteCommandTwo 具体命令2
*/
class ConcreteCommandTwo implements Command
{
/**
* 实现验证方法
*
* @param $value
*
* @return bool
*/
public function isValid($value)
{
// 能被2整除的数字
return $value % 2 == 0;
}
}
/**
* Class Invoker 调用者
*/
class Invoker
{
protected $_rule;
/**
* 构造方法
* 接收具体命令对象
* Invoker constructor.
*
* @param Command $rule
*/
public function __construct (Command $rule)
{
$this->_rule = $rule;
}
public function process(array $numbers)
{
foreach ($numbers as $n) {
if ($this->_rule->IsValid($n)) {
echo $n, "
";
}
}
}
}
/**
* Class Client 客户端
*/
class Client {
/**
* 测试
*/
public static function test()
{
$invoker = new Invoker(new ConcreteCommand());
$invoker->process(array(-1,-4,-8,1, 10, 15, 20, 36, 48, 59,111));
echo "
";
$invoker = new Invoker(new ConcreteCommandTwo());
$invoker->process(array(-1,-4,-8,1, 10, 15, 20, 36, 48, 59,111));
}
}
// 执行测试
Client::test();
运行结果:
1 10 15 20 36 48 59 111 -4 -8 10 20 36 48
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22070.html
摘要:命令模式概念将请求封装成对象,以便使用不同的请求队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。从而实现行为请求者与行为实现者的松耦合。 命令模式概念 将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。从而实现行为请求者与行为实现者的松耦合。 命令模式成员 抽象命令(Command):定义命令的接口,声明执行的方法(execute...
摘要:的设计模式有很多种,本文取最简单的三种模式工厂模式单例模式和注册树模式进行简单的讲解。文件创建完后,咱们回到单元测试文件文件再执行一下单元测试命令发现,也能返回成功,这样的话我们就能很方便的修改任何驱动了。 php 设计模式之工厂模式、单例模式、注册树模式 在软件工程中,创建型设计模式承担着对象创建的职责,尝试创建适合程序上下文的对象,对象创建设计模式的产生是由于软件工程设计的问题,具...
摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...
阅读 2688·2021-11-11 16:54
阅读 3004·2021-09-26 09:47
阅读 4214·2021-09-08 09:36
阅读 2955·2021-07-25 21:37
阅读 1082·2019-08-30 15:54
阅读 2710·2019-08-30 14:22
阅读 3451·2019-08-30 13:57
阅读 3301·2019-08-29 17:17