命令模式混乱

本文关键字:混乱 模式 命令 | 更新日期: 2023-09-27 18:28:04

命令模式显示:

命令模式允许您将操作的请求者与实际执行该操作的对象解耦。

命令将调用操作的对象与知道如何执行操作的对象解耦。

但在我发现的所有代码示例中,客户端(Requester、Inovker、RemoteControl、Waitress、Sender)和实际对象(Reciver、TV、Garage、Coffe)之间都存在耦合

如果你在下面提出这个问题命令模式

回答:说:您的遥控器不知道电视存在,或者不知道它的任何信息,它只是在您的Command对象上调用一个接口/方法。

但我看到远程类知道电视类,它(远程)正在创建电视类的对象。因此,通过一种关系存在关联,即那里已经存在耦合。

你能帮我弄清楚我缺了什么吗。我是否误解了脱钩或其他东西的含义?

我真的对定义感到困惑。

命令模式混乱

我认为它应该是一个类似ITV 的界面,而不是电视

public class TVOffCommand : Command    
{
    ITV tv;
    public TVOffCommand (ITV aTV)
    {
        this.tv= aTv;
    }
    #region Command Members
    public object Execute()
    {
        return tv.Off();
    }
    #endregion
}

您的遥控器应该调用以下内容:

ITVtv=新tv()

remote=new remote()//您的客户端

command=新TVOffCommand(tv);

remote.command(command);

看看这个提供概念的链接http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial

我认为将有关电视和远程控制的示例封装到命令设计模式中是没有意义的。你只有电视和遥控器。即使添加接口,也没有意义,因为存在(或没有)抽象级别。

最后一句话是命令设计模式的要点。一定有一些抽象和不谨慎。通常,您有一些系统可以接受执行命令(使用定义的IF=契约),该命令可以执行"某些"操作。

这取决于您对这个IF的实现,通常有多个实现。我最后用的是什么?

我们有使用Quartz框架的调度系统。我们已将其纳入某种服务中。该服务在一定时间内接受我们的IFperform方法——使用石英。

我们有两种类型的可执行任务——一种是立即执行的,另一种是在额外的时间内重新安排的——因为其他原因超出了这个问题的范围。

这两种类型的任务都是执行的,不管它们做了什么,不管它们是真正的可执行代码包装服务对那里发生的事情一无所知,这两种类型的任务都对调度系统一无所知。