问题:将责任分配给对象的基本原则是什么?
解决方案:将责任分配给具有实现它所需信息的类。
在下面的示例中, Customer类引用了所有客户 订单,因此很自然地负责计算订单的总价值:
public class Customer : Entity, IAggregateRoot
{
private readonly List<Order> _orders;
public GetOrdersTotal(Guid orderId)
{
return this._orders.Sum(x => x.Value);
}
}
|
这是最基本的原则,因为事实是 - 如果我们没有我们需要的数据,我们无论如何都无法满足要求并分配责任。
(banq注:一般职责行为涉及源与目标两个方面,例如A-->B,那么这个行为应该是放在源对象,还是目标对象,或者根本没有这两个对象,那么设计一个源对象,还是设计一个目标对象,信息专家模式认为设计一个源对象,将这个职责行为包括进来,因为源对象中包含创建目标对象所需的各种信息。
)