标签: command-pattern

UML类图中虚线箭头的含义是什么?

一般来说,UML类图中的虚线箭头是什么意思?

例如:此图像中虚线箭头的含义是什么(从客户端到ConcreteCommand):

在此输入图像描述

文章:命令模式

uml class-diagram command-pattern

24
推荐指数
2
解决办法
3万
查看次数

为什么命令模式在面向对象设计中很方便?

我不明白为什么Command模式在面向对象的设计中很方便.

而不是使用,例如Switch具有Lamp类的引用的Command ,我不能只创建一个Switchable抽象类并调用它的方法?

通过这种方式,我无论如何都要将调用者和接收者分离,而且我不必为每个接收者类创建一个Command对象.

oop design-patterns command-pattern

15
推荐指数
4
解决办法
9427
查看次数

使用Command Design模式

任何人都可以用命令模式的简单例子来解释.我在互联网上提到但我很困惑.

java oop design-patterns command-pattern

14
推荐指数
3
解决办法
1万
查看次数

实现命令模式

我在应用程序的设计过程中,我想使用命令模式进行撤消/重做.我对命令模式进行了一些研究,但我唯一没有得到的是:命令是否应该有undo和redo方法,或者我应该创建两个单独的命令,一个用于撤销,一个用于重做,并从中调用主要命令本身?

design-patterns undo-redo command-pattern

14
推荐指数
1
解决办法
2074
查看次数

命令模式似乎不必要复杂(我不明白的是什么?)

我已经阅读了命令模式,我想我错过了一些东西.Command对象的存在是为了抽象出Receiver对象的细节.在我看来,我们可以简单地停在这里,并保持对Command对象的引用,以在适当的时间执行适当的方法.

那么,为什么需要Invoker呢?这种额外的间接提供了什么优势?我们已经隐藏了命令后面的接收器的细节,那么命令随后被客户端隐藏的动机是什么?

abstraction information-hiding design-patterns command-pattern

13
推荐指数
2
解决办法
1396
查看次数

使用命令模式时的依赖注入

我第一次使用命令模式.我有点不确定我应该如何处理依赖项.

在下面的代码中,我们调度一个CreateProductCommand然后排队等待稍后执行的代码.该命令封装了执行所需的所有信息.

在这种情况下,我们可能需要访问某种类型的数据存储来创建产品.我的问题是,如何将此依赖项注入命令以便它可以执行?

public interface ICommand {
    void Execute();
}

public class CreateProductCommand : ICommand {
    private string productName;

    public CreateProductCommand(string productName) {
        this.ProductName = productName;
    }

    public void Execute() {
        // save product
    }
}

public class Dispatcher {
    public void Dispatch<TCommand>(TCommand command) where TCommand : ICommand {
        // save command to queue
    }
}

public class CommandInvoker {
    public void Run() {

        // get queue

        while (true) {
            var command = queue.Dequeue<ICommand>();
            command.Execute();
            Thread.Sleep(10000);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

.net dependency-injection command-pattern

13
推荐指数
1
解决办法
3865
查看次数

如何在java中为动作实现简单的撤消/重做?

我已经创建了一个XML编辑器,我在最后阶段陷入困境:添加撤消/重做功能.

当用户向JTree添加元素,属性或文本时,我只需要添加undo/redo.

我现在仍然很新,但今天在学校我试图(不成功)创建两个栈对象[],称为撤消和重做,并添加执行的动作.

例如,我有:

Action AddElement() {

// some code
public void actionPerformed(ActionEvent e) {

                    performElementAction();
                }
}
Run Code Online (Sandbox Code Playgroud)

performElementAction实际上只是向JTree添加了一个Element.

我想添加一种方法来将此操作添加到我的撤消堆栈中.是否只有一种简单的方法来实现undo.push(执行整个动作)或其他什么?

抱歉听起来像坏人,但那就是我:(

java user-interface undo command-pattern

12
推荐指数
3
解决办法
2万
查看次数

什么是行动设计模式?

什么是动作设计模式,我之前没有听说过它?我怀疑它与命令设计模式 [维基百科] 相同,但我找不到任何资源.

design-patterns command-pattern

11
推荐指数
2
解决办法
7542
查看次数

在Command Pattern中获取执行方法的结果

目前我正在尝试在一个简单的测试项目中实现事务脚本模式(正是Martin Fowler如何使用Command Pattern 描述),一切正常,问题是我不知道如何在指定时得到结果在具体类中执行的方法,它继承自ICommand接口.

让我们向您展示一些代码,以阐明我的功能.我有一个简单的CalculateSalaryCommand类,它继承自ICommand接口

public class CalculateSalaryCommand : ICommand
{
    private readonly CalculateSalaryTS _salaryTs;
    private readonly int _hour;
    private readonly int _salaryPerHour;

    public CalculateSalaryCommand(CalculateSalaryTS salaryTs, int hour, int salaryPerHour)
    {
        _salaryTs = salaryTs;
        _hour = hour;
        _salaryPerHour = salaryPerHour;
    }

    public void Execute()
    {
        _salaryTs.CalculateSalary(_hour, _salaryPerHour);
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个名为CalculateSalaryTS的简单Transaction Script类

public class CalculateSalaryTS {
    public void CalculateSalary(int _hour, int _salaryPerHour) {
        Result = _hour * _salaryPerHour;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我将实例传递给具体命令类,然后在Execute方法内部执行该实例的操作.好吧,一切都很好看.但有一个问题我无法返回执行方法的结果,应该是一个整数.为了解决这个问题,我决定在Transaction Script层添加一些代码,每个事务应该从一个通用ITransactionResult接口继承,如下所示:

public interface ITransactionResult<TResult>
{
    TResult …
Run Code Online (Sandbox Code Playgroud)

c# architecture design-patterns command-pattern

11
推荐指数
2
解决办法
8805
查看次数

真实世界的命令模式应用示例

命令模式可用于实现Transactional behavior(和Undo).
但我通过谷歌搜索找不到这些例子.我只能找到一盏是一些简单的例子switched on或off.
我在哪里可以找到Java这个/这些使用Command Pattern?实现的行为的编码示例(最好是)?

java oop design-patterns transactions command-pattern

11
推荐指数
1
解决办法
1万
查看次数