有人建了这样一个模型,如上图,之前有两个板块涉及这个问题
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修改过]