Domain driven design 什么';在我的域中建模真/假属性的正确方法是什么?
假设我有一个具有实体的域,该实体的一个属性是真/假属性,类似于活动/非活动 正确的建模方法是什么Domain driven design 什么';在我的域中建模真/假属性的正确方法是什么?,domain-driven-design,Domain Driven Design,假设我有一个具有实体的域,该实体的一个属性是真/假属性,类似于活动/非活动 正确的建模方法是什么 使用布尔值False=Inactive和True=Active 使用枚举: 公共枚举状态 { 活动=1, 非活动=2 } 我认为使用Enum是正确的方法,但是使用布尔属性也没有错 你们DDD的人是怎么想的?如果它是真/假对,那么布尔值就是好的。没有必要把事情过分复杂化 如果将该值用作方法参数,枚举甚至类的可读性可能会更好。但是,同样,您可以考虑调用两种不同的方法。 枚举可能存在的问题是,可能会使用无
你们DDD的人是怎么想的?如果它是真/假对,那么布尔值就是好的。没有必要把事情过分复杂化 如果将该值用作方法参数,枚举甚至类的可读性可能会更好。但是,同样,您可以考虑调用两种不同的方法。 枚举可能存在的问题是,可能会使用无效值。这可以通过使用以下类来缓解:
public class ActivityState {
public static ActivityState Active = new ActivityState();
public static ActivityState Inactive = new ActivityState();
}
...
// in your entity:
public ActivityState IsActive { get; set; }
this.IsActive = ActivityState.Active; // or
this.IsActive = ActivityState.Inactive;
它可以像枚举一样使用,但要确保不允许有无效值。我想说,枚举仅用于这些情况,以避免将概念映射到基元类型或类 例如,避免将2值逻辑映射为布尔值,或将更多值(如信号量的颜色:红、绿、黄)映射为整数1、2、3
枚举的存在只是为了避免这种情况,为了明确它们各自的含义,提高可读性和可维护性,以及类型安全性(您可以将方法限制为只接收枚举类型,而不是更广泛的布尔类型,这会使代码更安全).需要状态机时使用枚举。
Enum说,标志是相互排斥和密切相关的 例如,如果我们在RPG游戏中有一个战士类,它可以有“活着”或“死”的状态。这些不可能同时是真实的。因此,在这里使用枚举是有意义的
相反,战士可以战斗/奔跑/喝酒/说话/吃饭/睡觉。这里我们不能使用enum,因为它们不是相互排斥的(战士应该能够在挥舞剑和吃三明治的时候绕圈奔跑)。
Entity.isActive()
不行?@Rekin不,因为我使用的是Entity Framework,我需要将此属性公开。