我正在寻找状态模式。 (https://springframework.guru/gang-of-four-design-patterns/state-pattern/)
但我在春季项目中找不到如何实施。
我需要在实体类上声明状态实例的变量,因为我对状态模式的理解是正确的。 因为我的实体类具有状态,并且每个状态都需要不同的行为。
但我认为,实体类需要纯粹,因为它代表数据库对象。
JPA实体类的状态模式的最佳实践是什么?
感谢。
答案 0 :(得分:1)
你绝对是对的,实体类不应该实现任何商业逻辑。 此外,如果您的实体由任何 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 = ...
}
}
所以,你保持纯粹的权利并拥有良好的设计......