一个小模型的分析

有人建了这样一个模型,如上图,之前有两个板块涉及这个问题
http://www.jdon.com/article/32896.html
http://www.jdon.com/jivejdon/thread/33010.html


为什么抽象出"CreditCard"对象,我是这么考虑的: 对"支付"这个职责,到底放哪里?放在"CreditCard"对象里,就很好解释.也很好反映购物的本质:"最终我们都是用卡来支付的".最后"Order"通过关联找到"CreditCard"进行支付,并处理一些其它事情,比如更新库存等.


public class Customer {
public Customer(string name, CreditCard creditCard){
this.creditCard = creditCard;
this.creditCard.Customer = this
this.name = name;
}
private CreditCard creditCard;

public CreditCard CreditCard
{
return this.creditCard;
}
}


public class CreditCard {
public CreditCard()
{
this.customer = null;
}
private Customer customer;
public Customer Customer
{
get { }
set { }
}

public void Charge(double amount)
{
//支付代码
}
}

从代码来看:"CreditCard"和"Customer"的双向关联中","CreditCard"可以更换"Customer".这样做岂不是很危险.反而觉得"Customer"应该提供更换"CreditCard"的接口.
[该贴被fety07于2007-12-18 11:24修改过]

订单和CreditCard属于两个不同领域,它们只有通过支付这个活动才发生关系,属于松散联系,不宜放在一个领域模块中,直接发生关系。

正如DDD这本书中,将货物运输Delivery和shipping和Billing分开一样,订单属于订货模块,而CreditCard属于Billing模块。