`
zhouxwyeah
  • 浏览: 21066 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

chang unidirectiona association to bidirectional

阅读更多

   读重构,写点东西,自己记着。

动机:  原来单方面引用,现在需要双方面引用。

做法: 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)}
}
 写完了,第一次笔记,乱就乱点吧,慢慢成长。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics