苏木清华

--一些小记录

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

using System.Collections.Generic;

namespace LosTechies.DaysOfRefactoring.EncapsulateCollection.After
{
    public class Order
   
{
        private List<OrderLine> _orderLines;
        private double _orderTotal;

        public IEnumerable<OrderLine> OrderLines
        {
            get { return _orderLines; }
        }

        public void AddOrderLine(OrderLine orderLine)
        {
            _orderTotal += orderLine.Total;
            _orderLines.Add(orderLine);
        }

        public void RemoveOrderLine(OrderLine orderLine)
        {
            orderLine = _orderLines.Find(o => o == orderLine);

            if (orderLine == null)
                return;

            _orderTotal -= orderLine.Total;
            _orderLines.Remove(orderLine);
        }
    }

    public class OrderLine
   
{
        public double Total { get; private set; }
    }
}

第7行还能还原成List<OrderLine>,感觉用ReadonlyCollection<OrderLine>好一些。

       public ReadonlyCollection<OrderLine> OrderLines
        {
            get { return new ReadonlyCollection<OrderLine>(_orderLines); }
        }

-->  好处: 集合拥有者可以知悉集合的变化,拥有集合的管控权,用于增加 修改 删除 集合项时加入一些处理

 

posted on 2010-10-15 14:19  苏木清华  阅读(138)  评论(0)    收藏  举报