当前位置: 首页 > 知识库问答 >
问题:

具有负责命令的命令模式

马博学
2023-03-14

嗯,我正在尝试实现命令模式来创建与对象的交互。

几乎所有要创建的命令都由对一个对象的请求和该对象的响应组成。

所以问题是——如何管理这些回应?

当所有命令都无效时,这很容易制作。无论它们是什么,如果它们实现@executable@接口,您都可以执行它们,因此

无效执行(对象参数)

但是,当他们的反应有不同的类型时,该怎么办?也许命令模式不适合这个项目?

共有3个答案

蔺敏达
2023-03-14

命令执行结果可以是事件。

示例:

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...
    }
}
宋成天
2023-03-14

利用。NET的内置命令模式类型和lambdas。

首先,您不需要自己的命令patetrn接口。使用<code>操作

void Command(object params)

然后,对于任何不是这种形式的命令,请为其提供 lambda 填充程序,例如:

() => { SomeCommandThatTakesTwoParamsAndRetrunsInt(parms.part1, params.part2); }

然后,上述 lambda 符合 void 命令(对象参数)要求。

杨曜瑞
2023-03-14
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)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 介绍 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决

  • 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 介绍 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记

  • 问题 你需要让另一个对象处理你自己的可执行的代码。 解决方案 使用 Command pattern 传递函数的引用。 # Using a private variable to simulate external scripts or modules incrementers = (() -> privateVar = 0 singleIncrementer = () ->

  • 简介 在面向对象程式设计的范畴中,命令模式是一种设计模式,它尝试以物件来代表实际行动。命令物件可以把行动(action) 及其参数封装起来,于是这些行动可以被: 重复多次 取消(如果该物件有实作的话) 取消后又再重做 这些都是现代大型应用程序所必须的功能,即“复原”及“重复”。除此之外,可以用命令模式来实作的功能例子还有: 交易行为 进度列 精灵 使用者界面按钮及功能表项目 执行绪 pool 宏收

  • 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 介绍 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记