读重构,写点东西,自己记着。
动机: 原来单方面引用,现在需要双方面引用。
做法: 1.在被引用段添加一个变量,保存引用端指针。
2.确定关联性。--------------》多低多引用,无所谓 如果谓一对多,则拥有单一引用的控制者。一般谓多的一方。
3然后在被控端添加辅助函数4.让修改函数更新反向指针。
如:
class Order{
Customer c;
}
class Customer{
}
开始order引用customer,忽然说,用户可以有多个订单,即用户也可以引用订单:首先添加一变量保存指针:
class Customer{
Set orders
}
这里呢,customer拥有多个引用,order拥有单个引用,所以order谓控制端,在被控端加辅助函数:
class Customer{
Set orders;
void firendOrders(){
return oders;
}
}
现在要更新两边的引用:
class Order{
customer c;
set(Customer arg){
if(c!=null) c.firendOrders().remove(this);
c = arg;
if(c!=null)c.firendOrders().add(this);
}
}
class Customer{
Set Orders;
void add(order o){oders.add(o)}
}
写完了,第一次笔记,乱就乱点吧,慢慢成长。