有状态的命令模式

时间:2011-02-06 14:58:28

标签: java php oop design-patterns smalltalk

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

据此:Using Command Design pattern 命令应该是不可变的,这不是我需要的 - 我需要带有可编辑参数的有状态命令(整个命令将以ui / form编辑)

为什么有状态命令被认为是坏事?


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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果你想要它可变,我会建议使用FlyWeight模式。您可以使它类似于命令模式,因为它是对象的哈希值,并且如果它们已经存在则重用相同的对象,从而持久化对象状态。

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

因此,flyweightfactory会将所有对象存放在哈希映射中,您可以使用工厂检索保持其状态的对象。

http://www.avajava.com/tutorials/lessons/flyweight-pattern.html - >供任何人参考。