Dojo:所有对象都应该是有状态的吗?

Dojo:所有对象都应该是有状态的吗?,dojo,Dojo,在dojo中,我发现使所有对象都有状态很方便。这是最佳实践还是反模式 使所有对象都有状态的原因: 访问属性的一致接口:通过someObject.getsomeProperty和someObject.setsomeProperty、someValue访问所有属性 方便的内置mixin构造函数。例如,可以像这样实例化对象: 不总是使用有状态的原因: 我通常不需要状态更改通知的核心功能。 Stateful可能会给我的代码增加开销 Stateful可能意味着,当我的代码中的属性确实不应该被监视时,有理

在dojo中,我发现使所有对象都有状态很方便。这是最佳实践还是反模式

使所有对象都有状态的原因:

访问属性的一致接口:通过someObject.getsomeProperty和someObject.setsomeProperty、someValue访问所有属性 方便的内置mixin构造函数。例如,可以像这样实例化对象:

不总是使用有状态的原因:

我通常不需要状态更改通知的核心功能。 Stateful可能会给我的代码增加开销 Stateful可能意味着,当我的代码中的属性确实不应该被监视时,有理由监视它们 显然,有时使对象有状态是有意义的。如果您需要查看属性,那么将对象设置为有状态是有意义的。我要问的问题是:让所有对象都有状态以访问有状态提供的语法糖是否合理?。基本上有两种选择:

选项1:使所有类都有状态,以访问有状态提供的语法糖


选项2:仅使其成员应被监视的类具有状态

这是我根据自己的经验得出的看法:

看来你已经回答了你的问题。我肯定会选择方案2。 根据应用程序的大小,保持所有对象的状态可能成为反模式的一个大问题

看到您的代码的开发人员会认为您的bean是有意义的,即使它们不是 内存不是我们的问题现在大多数机器都有千兆字节或RAM,只有当你的应用程序在GC中达到标记阶段时才会出现问题,因为你的所有对象都将保留在内存中,我们的RAM使用率将是中等/高的,这取决于客户端的能力,所以在某些情况下你可以看到freez屏幕,例如,如果您将执行一些高级处理。 因此,仅在必要时使用statefull对象。请记住,所有类似于GC的短命小对象:这些长寿命对象只会填充堆中的旧空间

var objectInstance = new ObjectClass({
    someProperty: someValue,
    someOtherProperty: someOtherValue
});