标签: command-pattern

如何在WPF中禁用上下文菜单?

我在wpf上下文中有两个菜单项,我用命令绑定它们,当两个项目都不可用时如何隐藏上下文菜单,我的意思是两个命令都无法执行?

wpf binding command command-pattern

4
推荐指数
1
解决办法
6353
查看次数

如何为在一个上下文中而不是在另一个上下文中的聚合根的实体编写命令?

我正在为一家公司开发一个项目,该公司找到供应商为员工搬迁提供服务.这些服务的东西,搬运工没有专门做,如准备钢琴或过境或建造板条箱贵重物品.

在此域中,订单具有1:多个位置.

在移动行业中,订单经常不断变化,直到供应商执行他所要求的服务为止.因此,在我们的模型中,我们有一些适用于订单和位置的状态(例如,已提交,已取消,已暂停).

这里有一些非常简单的业务规则.这是一个抽样:

  1. 当订单处于"暂停"状态时,所有位置都将处于"暂停"状态.
  2. 如果其父订单处于暂停状态,则无法取消暂停.

等等.根据这些规则,我觉得这形成了一个聚合根边界.因此,我有一个MyClient.Statuses.Order聚合,其中Statuses是上下文/服务的名称/您想要调用它的任何内容:

public class Order {
    private Guid _id;
    private OrderStatus _status;

    public void PlaceOnHold() {
        if (_status == OrderStatus.Cancelled)
            // throw exception

        _status = OrderStatus.OnHold;
        Locations.ForEach(loc => loc.PlaceOnHold());
    } 

    public void PlaceLocationOnHold(Guid id) {
        if (_status == OrderStatus.Cancelled)
            // throw exception
        Locations.Single(loc => loc.Id == id).PlaceOnHold();
    }

    // etc...

        private Location[] Locations;
}

internal class Location { 
    public Guid Id;
    public LocationStatus Status;

    public void PlaceOnHold() {
        // It's ok …
Run Code Online (Sandbox Code Playgroud)

domain-driven-design command-pattern cqrs

4
推荐指数
1
解决办法
2142
查看次数

WPF:MVVM:命令与CallMethodAction?

我正在学习一个新的(小)项目的MVVM模式,我有一个关于在我们的控制器上调用动作的方法的问题:

我看到很多教程他们告诉我们使用Command,暗示声明一个RelayCommand,初始化它并创建RelayCommand调用的动作.

在另一方面,我有一位同事告诉我,我可以使用CallMethodAction触发器:

<i:Interaction.Triggers> 
  <i:EventTrigger> 
    <ei:CallMethodAction MethodName="Init" TargetObject="{Binding}" /> 
  </i:EventTrigger> 
</i:Interaction.Triggers> 
Run Code Online (Sandbox Code Playgroud)

对我来说,他的方法的优点是我不必为命令制作一些inits方法(可能永远不会使用).

那我错过了什么?为什么每个人都使用命令?

wpf mvvm command-pattern mvvm-light

4
推荐指数
2
解决办法
4342
查看次数

如何避免大if语句?

我确信有更多OO方式可以做到这一点,但我不确定如何.我有不同的"报告"对象(例如Report1,Report2,Report3等).我有一个服务对象,它将这些报表对象作为方法中的两个参数.在方法中,我有一个大的if else块语句,用于确定哪两个报表对象已传递给方法.这个逻辑似乎不是OO,没有更好的方法来确定我传入哪两个报告,然后为这两个报告提供正确的逻辑,所以我没有一个if-else块,螺旋式的控制并最终长达100多行?命令模式在这里运作良好还是有更好的东西更加以对象为中心?

Report1 r1 = new Report1();
Report2 r2 = new Report2();
Report3 r3 = new Report3();
Report4 r4 = new Report4();
etc...

SomeServiceObject serviceObj = new SomeServiceObject();
var returnedData1 = serviceObj.GetReportLogic(r1, r2);
var returnedData2 = serviceObj.GetReportLogic(r1, r3);
var returnedData3 = serviceObj.GetReportLogic(r3, r4);
etc..

public GetReportLogic(object someReport1, object someReport2)
{
    if ((someReport1 as Report1) and (someReport2 as Report1))
    {
        DoSomething();
    }
    else if ((someReport1 as Report1) and (someReport2 as Report2))
    {
        DoSomethingElse();
    }
    else if ((someReport1 as Report1) and (someReport2 …
Run Code Online (Sandbox Code Playgroud)

c# oop design-patterns command-pattern

4
推荐指数
1
解决办法
1666
查看次数

使用 JComponents 时命令模式的用处

所以,我正在使用 Swing 库开发一个程序,我显然有按钮和菜单项。其中一些应该做同样的事情,我认为使用命令模式应该是这样做的方式,例如我有一个“保存”按钮和一个“保存”菜单项,他们必须实现相同的保存算法. 命令模式似乎没问题,但我不知道谁是接收者。难道一个命令不应该在一个实现某种“接收器接口”的对象上工作,这样你就可以在不同的接收器上使用不同的命令来任意耦合它们吗?看起来我的模式实现中没有“接收器”。我的另一个疑问是是否应该将命令实现为单例,

谢谢你。

swing design-patterns jbutton command-pattern jmenuitem

4
推荐指数
1
解决办法
867
查看次数

在命令模式中,您将什么称为将其他命令组合在一起的命令?

这应该很容易,

我试图提出一个命令类的名称,该命令类是其他命令的集合.运行master命令时,将运行所有子命令.

任何理想?

design-patterns naming-conventions command-pattern

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

命令模式 - 参数

我希望在分布式客户端/服务器环境中使用命令模式.本质上,接收器的"执行"方法需要采用各种参数,但是我读到每个命令类都应该有一个统一的"执行"方法,该方法不应该揭示接收器的底层功能.

我的问题是,如何通过命令类将调用参数从交换机传递到不同的接收器?有没有人有一个简单的Java示例?我似乎找不到任何东西

谢谢你的帮助.

java command-pattern

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

迭代执行命令列表 - 哪个模式?

我编写了一个Java程序,它读入一个包含要执行的命令的文件(用我自己编写的语言).命令以字符串形式读入并放入数组中.现在,"调度程序" - 方法将循环遍历数组,解释命令并调用将对其执行操作的相应方法.

这当然导致了一大堆嵌套的if语句:

if commandReadIn == this, do that... 
if commandReadIn is of type x, get next element,treat next element as argument... 
etc. 
Run Code Online (Sandbox Code Playgroud)

现在我只有一些命令,但如果我想添加数百个呢?代码将变得无法维护.

现在我想知道是否可以完全摆脱条件逻辑.这里的命令模式似乎没什么用,因为我不得不在某个时候解释字符串..这意味着很多嵌套的"if".如果不可能,那么以一种能够轻松添加,编辑或删除命令的方式重构命令及其语法的最佳方法是什么?

java design-patterns strategy-pattern command-pattern

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

Java servlet - 实现命令模式

我试图了解如何在我的java servlet中实现'命令设计'.这是servlet的一个例子:

protected void processRequest(HttpServletRequest ...) {

    String action = request.getParameter("action"); 
    String destination = null;

    } if (action.equals("Home")) 
        destination = "Home";
    } else if (action.equals("Add")) {
         String var = request...

         try {
            db.add(var);
         } (DatabaseException e) {
            request.setAttribute("errorMessage", e.getMessage());
         }
         ...
    }
 }
Run Code Online (Sandbox Code Playgroud)

我理解的是每个if语句都应该转换为一个单独的类,其中包含一个处理例如添加对象的执行函数.我不明白的是请求是如何处理的,它们是在execute函数中处理还是从那里返回到Servlet/JSP(我的catched错误放在请求中并在我的JSP文件中使用)?

我希望有人可以给我一个基本结构,并告诉我如何开始实现它.

java jsp servlets request command-pattern

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

Command模式或Strategy模式更适合客户端 - 服务器调用吗?

我需要在求职面试中创建客户端 - 服务器程序,其中客户端发送命令并且服务器处理它们.

服务器需要能够轻松更改,这意味着以后可能会有更多的命令类型.

所以我使用Strategy实现它,这意味着类处理命令看起来类似于:

public class ServerProcessor
{
    Dictionary<string, Action<string>> commandsType;

    public ServerProcessor()
    {
        commandsType = new Dictionary<string, Action<string>>();
    }

    public void RegisterCommand(string commandName, Action<string> command)
    {
        commandsType.Add(commandName, command);
    }

    public void Process(string commandName, string vars)
    {
        if (commandsType.ContainsKey(commandName))
        {
            commandsType[commandName].Invoke(vars);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我这样做之后,面试官说我需要使用Command模式实现它,但没有说明原因.

Command模式将是这样的:

public interface ICommand
{
    void Execute(string vars);
    string GetName();
}

public class ServerProcessor2
{
    List<ICommand> commandsType;

    public ServerProcessor2()
    {
        commandsType = new List<ICommand>();
    }

    public void RegisterCommand(ICommand commandName)
    {
        commandsType.Add(commandName);
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns strategy-pattern command-pattern

2
推荐指数
1
解决办法
716
查看次数