Java 有状态命令模式
我想知道在域模型的上下文中表示编辑表单的最佳方式是什么,最后我使用了命令设计模式 据此: 命令应该是不可变的,这不是我需要的-我需要带可编辑参数的有状态命令(整个命令将在ui/表单中编辑) 为什么认为有状态命令不好?Java 有状态命令模式,java,php,oop,design-patterns,smalltalk,Java,Php,Oop,Design Patterns,Smalltalk,我想知道在域模型的上下文中表示编辑表单的最佳方式是什么,最后我使用了命令设计模式 据此: 命令应该是不可变的,这不是我需要的-我需要带可编辑参数的有状态命令(整个命令将在ui/表单中编辑) 为什么认为有状态命令不好? 编辑:过了一段时间,现在很清楚我在寻找ViewModel模式。这是对任何webapp屏幕建模的适当方法。基本上,它是有状态(每个视图实例)控制器。您仍然希望它们是不可变的,因为它们可以用于从快照重新创建当前状态。但它们可以拥有您想要的所有参数,只要您确保它们在应用命令后不会更改
编辑:过了一段时间,现在很清楚我在寻找ViewModel模式。这是对任何webapp屏幕建模的适当方法。基本上,它是有状态(每个视图实例)控制器。您仍然希望它们是不可变的,因为它们可以用于从快照重新创建当前状态。但它们可以拥有您想要的所有参数,只要您确保它们在应用命令后不会更改 如果您希望它是可变的,我建议使用FlyWeight图案。您可以使其类似于命令模式,因为它是对象的散列,并且如果已经存在相同的对象,它将重用这些对象,从而保持对象状态 您可以将FlyWeight视为一组可以动态调用的单例对象(通过散列函数) 因此,flyweightfactory将把所有对象放在一个哈希映射中,您可以使用该工厂来检索保持其状态的对象
-->供任何人参考。您是否尝试过实现可变命令?你在这个过程中遇到了无法解决的问题吗?没有-我要实施它,我只是想知道是否没有陷阱…@kamil,这就是你可以撤销的原因吗?@kamil,我的意思是你想使用这个模式来撤销吗?如果是这样,那么您使用的模式是错误的。使用Mememto pattern,这是一个新命令,从现有命令的副本开始生成。