java - 改变注入(inject)对象的状态是不好的做法吗?

标签 java design-patterns dependency-injection

假设我在代码中的多个不同类中注入(inject)了 List 的相同实例。从一个类中操作列表(例如添加/删除项目)以便其他类可以使用列表的新状态是否是一种不好的做法?除了并发问题,它是否是在我的类之间传达更改的正确方法?或者我应该在函数和不同层之间传递列表(如果我必须跨多个层传递大量变量,这可能会变得丑陋;与更改底层列表并在实例所在的任何地方更改状态相比注入(inject),不会污染任何方法签名)。

最佳答案

我认为更好的解决方案是使用同步访问,这在实例同时更改列表的情况下会有所帮助,但让我告诉你,允许实例直接更改列表,是一个非常糟糕的做法,理想的是使对象不可变,然后每个实例都可以毫无问题地使用自己的列表,但是如果您需要这种行为,在您的业务逻辑中,我建议创建一个持久性策略,一个封装列表并对其进行更改的对象,全局,不共享状态,然后其他实例可以在列表更改时获取列表的新副本,或者您可以创建子/通知策略以在列表状态更改时通知实例,然后更新其列表对象.

关于java - 改变注入(inject)对象的状态是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187636/

相关文章:

java - R.java 中分配给属性的值的含义

java - 如何删除旧版本的Java并安装新版本

c# - 管理对象状态/设置的模式?

android - Dagger 2 引发 Component.Builder : @Component. Builder 缺少所需模块或组件的 setter 错误:

c# - 如何在 ASP.NET Core 中将我的服务注册拆分成不同的文件?

java - Android 6.0 应用程序未加载 Activity

java - Hazelcast 启动时出现问题 (CONCURRENT_MAP_PUT)

c# - 设计简单模拟器时的设计考虑

java - 什么时候应该使用工厂方法模式? (而不是组合)

c# - 依赖注入(inject)和策略模式