// 贫血模型的实体类 publicclassOrder { public Guid Id { get; set; } publicdecimal TotalAmount { get; set; } public OrderStatus Status { get; set; } // 只有属性,没有业务方法 }
publicclassProgram { voidMain(stringargs){ Order order = ctx.Orders.FindById(id); //取消订单 if (order.Status == OrderStatus.Paid) { order.Status = OrderStatus.Cancelled; order.TotalAmount = 0; tx.Save(); } } }
可以看到这个类只含属性,不含逻辑方法,这样的类通常也叫POCO类。使用这个 Order 我们还需在Order类外部编写取消订单的逻辑,这需要使用者需要了解取消订单的领域逻辑,这是不符合面向对象编程的基本特征“封装性”的。我们应该把类内部的细节封装起来,对外提供领域方法,从而让类的使用者无须关心Order类需要怎么样去取消订单。