嗯,我正在尝试实现命令模式来创建与对象的交互。
几乎所有要创建的命令都由对一个对象的请求和该对象的响应组成。
所以问题是——如何管理这些回应?
当所有命令都无效时,这很容易制作。无论它们是什么,如果它们实现@executable@接口,您都可以执行它们,因此
无效执行(对象参数)
但是,当他们的反应有不同的类型时,该怎么办?也许命令模式不适合这个项目?
命令执行结果可以是事件。
示例:
class ChangeNameCommand
{
int _id;
string _name;
IRepository _repository;
IEventPublisher _publisher;
public ChangeNameCommand(int id, string name, IRepository repository, IEventPublisher publisher)
{
_id = id;
_name = name;
_repository = repository;
_publisher = publisher;
}
public void Execute()
{
User user = _repository.Get(_id)
user.Name = _name;
_repository.Save(user);
NameChangedEvent e = new NameChangedEvent();
_publisher.Publish(e);
}
}
class UserNameChanged : IHandler<NameChangedEvent>
{
public void Handle(NameChangedEvent e)
{
//TODO...
}
}
利用。NET的内置命令模式类型和lambdas。
首先,您不需要自己的命令patetrn接口。使用<code>操作
void Command(object params)
然后,对于任何不是这种形式的命令,请为其提供 lambda 填充程序,例如:
() => { SomeCommandThatTakesTwoParamsAndRetrunsInt(parms.part1, params.part2); }
然后,上述 lambda 符合 void 命令(对象参数)
要求。
ICommandResponse Execute(object params)
您可以返回一个带有ResponseType属性的接口,该属性为您提供有关具体响应类型的信息。
bl_update 源代码: systemcmds/bl_update 从文件烧写引导程序的实用程序 用法 bl_update [参数...] setopt 设置可选位来解锁FLASH(仅在锁定状态时需要) <file> 引导程序的二进制文件 config 源代码: systemcmds/config 配置传感器驱动器(采样率、发布频率以及范围等等) 用法
主要内容:介绍,实现,Order.java,Stock.java,BuyStock.java,SellStock.java,Broker.java,CommandPatternDemo.java命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 介绍 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决
命令模式 亦称:动作、事务、Action、Transaction、Command 意图 命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。 问题 假如你正在开发一款新的文字编辑器, 当前的任务是创建一个包含多个按钮的工具栏, 并让每个按钮对应编辑器的不同操作。 你创建
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 介绍 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记
问题 你需要让另一个对象处理你自己的可执行的代码。 解决方案 使用 Command pattern 传递函数的引用。 # Using a private variable to simulate external scripts or modules incrementers = (() -> privateVar = 0 singleIncrementer = () ->
简介 在面向对象程式设计的范畴中,命令模式是一种设计模式,它尝试以物件来代表实际行动。命令物件可以把行动(action) 及其参数封装起来,于是这些行动可以被: 重复多次 取消(如果该物件有实作的话) 取消后又再重做 这些都是现代大型应用程序所必须的功能,即“复原”及“重复”。除此之外,可以用命令模式来实作的功能例子还有: 交易行为 进度列 精灵 使用者界面按钮及功能表项目 执行绪 pool 宏收