标签: command-pattern

如何使用命令模式来降低菜单的复杂性?

假设我有4个按钮,我希望每个按钮都做不同的事情.我不想要一个大的switch语句,我根据按下的按钮做了不同的事情,我也不想为每个按钮点击一个单独的方法.命令模式是解决这个问题的好方法吗?

design-patterns menu button command-pattern

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

如何在用户键入时使用Silverlight数据绑定更新模型?

我目前正在使用Silverlight 4并遵循MVVM模式.我有登录框绑定到我的ViewModel,如下所示:

<PasswordBox Password="{Binding Path=Password, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)

然后,我有一个绑定到Command的按钮,该按钮监听ViewModel的PropertyChanged事件,当其中一个数据绑定更新其数据时,它会检查是否有足够的数据来启用Login按钮.

但是,PropertyChanged事件仅在用户从其中一个控件更改焦点时触发,我希望每次按键都更新模型,以便尽快启用登录按钮.

data-binding silverlight mvvm command-pattern silverlight-4.0

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

为什么GWT不使用gwt-dispatch?

在研究了gwt-dispatchGoogle Wave I/O演示文稿(最佳实践)(这里视频)之后,我想知道为什么官方GWT版本(2.0)不使用调度(即命令模式)来实现它的RPC调用.有人知道吗?

gwt command-pattern gwt-dispatch

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

了解没有MVVM的ICommand实现

我试图了解如何使用命令.我读了很多关于命令的知识,我知道,大多数时候命令都是在MVVM模式中使用的.我也知道,有一个RoutedCommand类 - 通常用于在开发时节省时间.

但是 - 我想了解基础知识 - 而这正是问题所在.开始了:

在我的应用程序中,我定义了一个类'MyCommand':

 public class MyCommand :ICommand
{
    public void Execute(object parameter)
    {
        Console.WriteLine("Execute called!");
        CanExecuteChanged(null, null);
    }

    public bool CanExecute(object parameter)
    {
        Console.WriteLine("CanExecute called!");
        return true;
    }

    public event EventHandler CanExecuteChanged;
}
Run Code Online (Sandbox Code Playgroud)

好吧 - 为了获得静态访问,我决定创建一个类,仅适用于所有应用程序命令:

 public static class AppCommands
    {
        private static ICommand anyCommand = new MyCommand();

        public static ICommand AnyCommand
        {
            get { return anyCommand; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

就快到了.现在我在MainWindow中放了两个按钮.其中一个是"绑定"到命令:

<StackPanel>
    <Button Content="Button" Height="23" Name="button1" Width="75" Click="button1_Click" />
    <Button Content="Button" Height="23" Name="button2" Width="75" …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm command-pattern

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

重用代码以循环遍历多维数组

假设我有一个多维数组作为类的一个成员和许多方法,它循环遍历数组的每个元素然后对它进行操作.代码可能如下所示:

public class Baz {

    private Foo[][] fooArray = new Foo[100][100];

    public Baz() {
        for (int i = 0; i < fooArray.length; i++) {
            for (int j = 0; j < fooArray[i].length; j++) {
                // Initialize fooArray
            }
        }
    }

    public void method1() {
        for (int i = 0; i < fooArray.length; i++) {
            for (int j = 0; j < fooArray[i].length; j++) {
                // Do something with fooArray[i][j] 
            }
        }
    }

    public void method2() {
        for (int i = …
Run Code Online (Sandbox Code Playgroud)

java refactoring loops command-pattern

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

IoC避免注入容器

我正在与IoC合作,更准确地说是与windsor一起工作,我对一件事情有点怀疑.现在我正在实现DDD命令层,所以对于每个命令,我有一个具体的类如下

public class CreateUserCommand : IDomainCommand{
   /// implementation
}
Run Code Online (Sandbox Code Playgroud)

每个命令都有一个或多个处理程序,具有以下实现

public class CreateUserHandler : IDomainCommandHandler<CreateUserCommand>
{
   public void Handle(CreateUserCommand command)
   {
      /// implementation
   }
}
Run Code Online (Sandbox Code Playgroud)

我的Command Dispatcher出现问题.我目前正在使用以下表格

public class CommandDispatcher : ICommandDispatcher
{
   private IWindsorContainer container;

   public CommandDispatcher(IWindsorContainer container)
   {
      this.container = container;
   }

   public void Dispatch<T>(T command)
   {
      var commandHandler = container.Resolve<ICommandHandler<T>>();
    commandHandler.Handle(command);

   }
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢的是调度员对IoC容器的认识,但同样地,我不知道如何在我需要它时解决处理程序.Shell我在Dispatcher中注入一个处理程序工厂,并在运行时使用它来解析我的处理程序?

castle-windsor inversion-of-control command-pattern

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

域驱动设计与命令模式 - 互斥?

tl; dr:
我喜欢Command-pattern的小型,专注的类,SetProjectAsActiveCommand但我也是DDD让模型负责自己的核心业务功能的方法,比如调用Project::setAsActive().这两个想法可以一起工作,还是它们是互斥的架构?
/ tl;博士

我一直工作在一个项目中,我们已经使用了Command模式,它具有类,如过去的几个月里ProposeNewProjectCommand,SetProjectAsActiveCommandAddCommentToProjectCommand,所有这一切都是由一个命令总线处理.这些课程往往相当小,专注,只做一件事.

最近我一直在阅读有关领域驱动设计(DDD)和我推测,这种方法更依赖于模型做自己的工作,所以上面的命令可能被替换Organisation::proposeNewProject(),Project::setAsActive()Project::addComment().

在模型上使用这些方法意味着它们可以充当"聚合根" (例如,在上面的示例中,Project负责创建自己的注释).

虽然我非常喜欢让我的实体对其核心业务功能负有更多责任的想法,但我也担心我的模型可能变得非常非常大,有很多关于应用程序可以执行的各种操作的方法.

有没有办法让Command模式的小型,专注的类仍然使模型一流的公民负责他们的关键业务功能,如在DDD?还是解决潜在大型模型问题的方法?

或者,或者,我应该选择一种模式并专门使用它?


哈里森,提前感谢您提出的任何见解

PS.我从来没有真正研究过使用DDD的应用程序,所以如果这是一个非常天真的问题我会道歉.

domain-driven-design command-pattern

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

命令模式:客户端和调用者

在命令模式中:

为什么客户端参与者不应该与调用者参与者是同一个类?当客户端参与者和调用者参与者可以是同一个类时,是否有可能的场景?

design-patterns command-pattern

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

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

wpf MvvM Command数据上下文问题

我用谷歌搜索,但找不到我想要的东西.我有几个问题......

这是我的代码结构:

我的命令类:

 public class BrowseCommand : ICommand 
 {
   //Code here
 }
Run Code Online (Sandbox Code Playgroud)

在ViewModel中:

public class ExampleViewModel
{
    public ExampleViewModel()
    {
        BrowseCommand = new BrowseCommand();
    }

    public ICommand BrowseCommand
    {
        get;
        private set;
    }
  //More Code...
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs:

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ExampleViewModel();
    }
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml:

Window x:Class="Ship32RcParser.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" >

   <Grid>
       <Button  Content="Browse" Command="{Binding BrowseCommand}"/>
       <Button  Content="Search" Command="{Binding I_NEED_HELP_HERE}"  />
   </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)



我知道我的浏览工作正常,因为MainWindow.xaml.cs有

DataContext = new ExampleViewModel(); …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm model-binding command-pattern

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

Windows Presentation Foundation (WPF) 项目不支持 AppCommand

我试图在 VS2012 (Window 7) 中运行问题“ Understanding ICommandimplementation without MVVM ”中的代码,但出现错误:“WindowsPresentationFoundation(WPF)项目中不支持AppCommand”

在此输入图像描述

好吧,出了什么问题或者我应该做什么才能运行该问题的代码?

MainWindow.xaml.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace seWPFUnderstandingICommandWithout_MVVM
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            AppCommands.AnyCommand.CanExecuteChanged += MyEventHandler;
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            // Nothing for the moment
        }
        private void MyEventHandler(object sender, EventArgs e)
        {
            Console.WriteLine("MyEventHandler called");
        }
     } …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm command-pattern icommand

0
推荐指数
1
解决办法
2871
查看次数

keydown上的UWP触发器命令?

我试图在用户按下某个键时执行命令:

   <TextBox Command="{Binding myCommand}" Height="200" Width="200" FontSize="20"></TextBox>
Run Code Online (Sandbox Code Playgroud)

现在使用UWP我不完全确定如何实现.在WPF中我们有键绑定但是在这里?如果可能,没有第三方库.你们怎么解决这个问题?我不喜欢重新发明轮子并创建我自己的命令实现,适用于像这样的边缘情况.

c# mvvm command-pattern uwp

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