gpt4 book ai didi

java - 状态模式 : States as Hibernate singleton entities

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:46 25 4
gpt4 key购买 nike

我拥有的:
我已经实现了“状态模式”。现在我的应用程序中有十几个状态,它们都是 Spring 的 bean,例如:

@Service(value = "FinishedState")
@Scope("singleton")
public class FinishedState extends AbstractState {
private final String stateName = "Finished";
private final String badgeColor = "#459852";

//implementation of state API
}

我想要什么:
能够改变stateNamebadgeColor无需重新编译我的应用程序。或者换句话说,我想将我的状态存储在数据库中。

问什么问题:

  1. 将所有状态设置为单例实体是个好主意吗?
  2. 我可能会遇到什么困难?

意味着我将手动为每个 State 设置一个 id ,例如 id = this.getClass().getSimpleName() ,并将所有状态同级映射到一张表中。

<小时/>

编辑(@Adam Arold):

值得一提的是,我需要其他实体可以引用该单例的状态

@Service(value = "FinishedState ")
@Scope("singleton")
public class FinishedState extends AbstractState {
private final String stateName = "Finished";
private final String badgeColor = "#459852";

@Override
public void someMethod1(Session session, String newState, MyEntity entity) {
entity.setStatus(newState);
writeHistory(entity);
}

@Override
protected boolean someMethod2(Session session, AbstractState newState, MyEntity entity)
{
return true;
}
}

最佳答案

我唯一一次将状态设置为单例是当我频繁更改状态时。当性能至关重要时,这非常有用 - 如果我不希望每次在状态之间来回切换时都调用 new

建议

我给你的建议是你分析:

  • 你们的系统在各州的运作情况如何?
  • 您经常改变状态吗?
  • 你能负担得起拥有一堆实例的内存空间吗?系统执行期间状态是否处于 Activity 状态?

我发现您可能遇到的唯一问题是,当您的系统运行时,单例状态将一直处于 Activity 状态,直到系统完成为止。

就个人而言我会让他们成为单例

关于java - 状态模式 : States as Hibernate singleton entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com