zoukankan      html  css  js  c++  java
  • 31天重构指南之一:封装集合

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

       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
  • 相关阅读:
    Co.
    编程
    编程
    编程
    数据同步
    Co.
    Co.
    Co.
    Co.
    sss
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1567156.html
Copyright © 2011-2022 走看看