假设您有一个域实体 User,并且您希望支持用户将商品添加到他们的购物车的功能。现在,我们希望确保购物车中的商品是唯一的,因此我们在 User 类中创建以下函数:
```java public void addItemToCart(Item item) { if (!cart.contains(item)) { cart.add(item); } } ```
请注意,`contains()` 方法用于检查集合中是否已经存在该商品。如果不存在,则将其添加到购物车中。
这很好用。但是,如果我们现在也想在向用户添加商品时发送电子邮件,该怎么办? 我们可以将其添加到AddItemToCart中,但这需要将某种IEmailer依赖项注入User类中。
另一种选择是创建一个处理此事务的服务(例如ShoppingCartService),它将执行业务逻辑并发送电子邮件。然而,这会导致一个相当贫血的领域(即User类仅仅是getter/setter)。
```java public void addItemToCart(Item item) { if (!cart.contains(item)) { cart.add(item); } } ```
请注意,`contains()` 方法用于检查集合中是否已经存在该商品。如果不存在,则将其添加到购物车中。
function AddItemToCart(Item item)
{
// Add business logic to make sure item is unique
}
这很好用。但是,如果我们现在也想在向用户添加商品时发送电子邮件,该怎么办? 我们可以将其添加到AddItemToCart中,但这需要将某种IEmailer依赖项注入User类中。
另一种选择是创建一个处理此事务的服务(例如ShoppingCartService),它将执行业务逻辑并发送电子邮件。然而,这会导致一个相当贫血的领域(即User类仅仅是getter/setter)。