5

我有一个 StoreOwner 实体。StoreOwner 有一个 Store 属性。

public class Product { }

public class Store { 
    public IEnumerable<Product> Products { get; private set; }
}

public class StoreOwner { 
    public Store Store { get; private set }
}

我有以下用户故事:

作为店主,我可以将产品添加到我的商店。

“将产品添加到商店”的行为应该生活在哪里?在 StoreOwner 或 Store 上?

如果是商店,方法名称是什么?

4

4 回答 4

4

我会把它放在 中Store,因为我猜 products 集合是 中的子实体Store。与Store.AddProduct()公开产品系列相反。

如果有逻辑可以确保只有当前所有者可以做到这一点,我相信只有Store已经Store了解所有者的情况下才可以选择加入,但在尝试 all 之前绝对AddProduct应该进行验证。

这部分看起来像是一个用户角色,所以它可能属于您的 UI 控制器,或者如果当前用户实际上是商店所有者,则可能会将其纳入用户角色并对其进行授权。

于 2012-08-10T15:32:46.760 回答
1

“加店”的行为应该活在哪里?在 StoreOwner 或 Store 上?

我假设您的意思是添加产品

我希望该方法成为Store. 类似的东西store.AddProduct(product)。您不能将产品添加给所有者,除非它是一些沙龙洗发水或其他东西

于 2012-08-10T15:31:33.710 回答
1

我采取的最佳方法之一是始终关注谁拥有什么。

所以 :

StoreOwner 拥有一个 Store A Store 包含 Product

因此,根据您的故事和上述用例,您会说 Store.AddProduct(newProduct);

于 2012-08-10T15:34:09.613 回答
0

如果您只能在有权访问StoreOwner实例的情况下添加产品,请将方法放在那里,否则放在Store类中。

名字AddProduct好像很明显...

于 2012-08-10T15:34:17.590 回答