Java 在命令设计模式的上下文中,客户端只是程序的主要部分吗?
我正在开发我的第一个大型程序,它将实现我一直在研究的许多设计模式。我的程序的一部分是带有按钮的用户界面,我使用命令模式将命令绑定到这些按钮。我对“客户”感到困惑。它只是你程序中的主要部分吗 我的看法是:命令模式中有两个重要的概念实体,一个可能被忽略了:Java 在命令设计模式的上下文中,客户端只是程序的主要部分吗?,java,design-patterns,command-pattern,Java,Design Patterns,Command Pattern,我正在开发我的第一个大型程序,它将实现我一直在研究的许多设计模式。我的程序的一部分是带有按钮的用户界面,我使用命令模式将命令绑定到这些按钮。我对“客户”感到困惑。它只是你程序中的主要部分吗 我的看法是:命令模式中有两个重要的概念实体,一个可能被忽略了: 最重要的是,客户希望事情发生。命令对象因客户端而存在。客户希望在他们的帮助下有所成就 调用程序,一个相当愚蠢的对象,只知道如何按下简单的按钮(=使用命令界面的方法)。不需要知道任何关于其他实体的信息,也不需要知道这些命令的实际作用。它需要关心的
- 最重要的是,客户希望事情发生。命令对象因客户端而存在。客户希望在他们的帮助下有所成就
- 调用程序,一个相当愚蠢的对象,只知道如何按下简单的按钮(=使用命令界面的方法)。不需要知道任何关于其他实体的信息,也不需要知道这些命令的实际作用。它需要关心的是,当给它一个按钮时,它必须按下那个按钮。(在您的例子中:gui框架,即当人类按下gui按钮时,“按下”onAction()或wheever方法-“按钮”)
- 接受者。有点让整个图像膨胀:如果一个命令包含一个方法调用,那么显然有一个对象接收这个方法调用。但是没有理由把接受者包括在图片中
客户机可以是很多东西,一个简单的方法或者一个完整的数千个类抽象层。甚至可能是未建模为类的实体。就像您作为程序员一样。在您的场景中,情况可能是这样,但对于整个命令模式来说,情况并非如此。它可能是另一个程序或网络接口。重要的是,客户机想要搞乱您的类,而命令模式将确保一切都是集中的客户机以许多设计模式呈现,而不仅仅是命令模式。这是一张来自以下方面的图表: 通常,客户是设计中希望从设计模式的应用中获益的部分。受保护的变体的工作原理类似于插件方案。也就是说,您可以对打开的部件进行更改,而客户端不会受到影响,因为它只直接依赖于关闭的部件
您可以在命令模式中说,如果添加新命令(类似于插件),客户端将不需要(大量)更改 请添加有关“客户端”的更多详细信息。您使用哪个引用作为命令模式?