实体类上的业务逻辑

问题描述 投票:0回答:1

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

但是我没有找到如何在我的 spring 项目中实现。

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

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

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

谢谢。

spring-mvc jpa design-patterns
1个回答
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 = ...
    }
}

因此,您将保持实体纯净并拥有良好的设计......

© www.soinside.com 2019 - 2024. All rights reserved.