您的位置:首页 > 其它

31天重构指南之一:封装集合

2009-09-15 17:15 513 查看
在有些情况下不将类中的集合对象暴露给用户是合理的,特别是当您为集合提供了另外的添加和删除方法时。基于这个原因,只暴露一个仅仅能遍历但不能修改的集合是明智的,下面让我们来看一段代码:

1: public class Order


2: {


3:     private List<OrderLine> _orderLines;


4: 


5:     public IEnumerable<OrderLine> OrderLines


6:     {


7:         get { return _orderLines; }


8:     }


9: 


10:     public void AddOrderLine(OrderLine orderLine)


11:     {


12:         _orderTotal += orderLine.Total;


13:         _orderLines.Add(orderLine);


14:     }


15: 


16:     public void RemoveOrderLine(OrderLine orderLine)


17:     {


18:         orderLine = _orderLines.Find(o => o == orderLine);


19:         if (orderLine == null) return;


20: 


21:         _orderTotal -= orderLine.Total


22:         _orderLines.Remove(orderLine);


23:     }


24: }


 


如代码所示,我们为Order类中的集合对象添加了Add和Remove方法,并将集合暴露为一个只读的IEnumerable<OrderLine>类型。这是一个很简单的重构,但却可以保证类的使用者不会误用类中的集合对象。

原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/02/refactoring-day-1-encapsulate-collection.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: