Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有状态命令模式_Java_Php_Oop_Design Patterns_Smalltalk - Fatal编程技术网

Java 有状态命令模式

Java 有状态命令模式,java,php,oop,design-patterns,smalltalk,Java,Php,Oop,Design Patterns,Smalltalk,我想知道在域模型的上下文中表示编辑表单的最佳方式是什么,最后我使用了命令设计模式 据此: 命令应该是不可变的,这不是我需要的-我需要带可编辑参数的有状态命令(整个命令将在ui/表单中编辑) 为什么认为有状态命令不好? 编辑:过了一段时间,现在很清楚我在寻找ViewModel模式。这是对任何webapp屏幕建模的适当方法。基本上,它是有状态(每个视图实例)控制器。您仍然希望它们是不可变的,因为它们可以用于从快照重新创建当前状态。但它们可以拥有您想要的所有参数,只要您确保它们在应用命令后不会更改

我想知道在域模型的上下文中表示编辑表单的最佳方式是什么,最后我使用了命令设计模式

据此: 命令应该是不可变的,这不是我需要的-我需要带可编辑参数的有状态命令(整个命令将在ui/表单中编辑)

为什么认为有状态命令不好?



编辑:过了一段时间,现在很清楚我在寻找ViewModel模式。这是对任何webapp屏幕建模的适当方法。基本上,它是有状态(每个视图实例)控制器。

您仍然希望它们是不可变的,因为它们可以用于从快照重新创建当前状态。但它们可以拥有您想要的所有参数,只要您确保它们在应用命令后不会更改

如果您希望它是可变的,我建议使用FlyWeight图案。您可以使其类似于命令模式,因为它是对象的散列,并且如果已经存在相同的对象,它将重用这些对象,从而保持对象状态

您可以将FlyWeight视为一组可以动态调用的单例对象(通过散列函数)

因此,flyweightfactory将把所有对象放在一个哈希映射中,您可以使用该工厂来检索保持其状态的对象


-->供任何人参考。

您是否尝试过实现可变命令?你在这个过程中遇到了无法解决的问题吗?没有-我要实施它,我只是想知道是否没有陷阱…@kamil,这就是你可以撤销的原因吗?@kamil,我的意思是你想使用这个模式来撤销吗?如果是这样,那么您使用的模式是错误的。使用Mememto pattern,这是一个新命令,从现有命令的副本开始生成。