实体类的业务逻辑

时间:2016-06-11 14:06:57

标签: spring-mvc jpa design-patterns

我正在寻找状态模式。 (https://springframework.guru/gang-of-four-design-patterns/state-pattern/

但我在春季项目中找不到如何实施。

我需要在实体类上声明状态实例的变量,因为我对状态模式的理解是正确的。 因为我的实体类具有状态,并且每个状态都需要不同的行为。

但我认为,实体类需要纯粹,因为它代表数据库对象。

JPA实体类的状态模式的最佳实践是什么?

感谢。

1 个答案:

答案 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 = ...
}
}

所以,你保持纯粹的权利并拥有良好的设计......