我正在寻找状态模式。 (https://springframework.guru/gang-of-four-design-patterns/state-pattern/)
但是我没有找到如何在我的 spring 项目中实现。
我需要在实体类上声明状态实例的变量,因为我对状态模式的理解是正确的。 因为我的实体类有状态并且每个状态需要不同的行为。
但我认为,实体类需要纯,因为它代表数据库对象。
JPA实体类的状态模式最佳实践是什么?
谢谢。
你绝对是对的,实体类不应该实现任何业务逻辑。 此外,如果您的实体是由任何ORM框架自动生成的,只要重新生成您的自定义代码,您就会遇到严重的麻烦。
尝试将组合与状态模式一起使用。伪代码:
// Entity class
public class Person
{
public long Id {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public long Status {get; set;}
}
public class PersonState : IPersonState
{
private Person person;
public PersonState(Person person, ...)
{
this.person = person;
...
}
// Your state methods
public void SetActiveState()
{
// do something with person status
person.Status = ...
}
public void SetInactiveState()
{
// do something with person
person.Status = ...
}
}
因此,您将保持实体纯净并拥有良好的设计......