zoukankan      html  css  js  c++  java
  • 重构:Encapsulate Collection

     

     重构:Encapsulate Collection

        

          重构是持续改进代码的基础。重构将使我们对单元测试、共享代码以及更可靠的无bug 的代码这些最佳实践得到提高。


          Encapsulate Collection条件:当集合的add/remove操作中包含其他的相关逻辑时,以可迭代但不直接在集合上进行操作的方式来向类的使用者隐藏类中的完整集合。

     

          如下所示:

     

    使用的对象
    public class UsingObject
        {
            
    private int _Id;
            
    private string _name;
            
    public int Id
            {
                
    get { return _Id; }
                
    set { _Id = value; }      
            }

            
    public string Name
            {
                
    get { return _name; }
                
    set { _name = value; }   
            }
        }

        

          当另外一个控制该对象集合的类中,对集合的操作有条件限制时,采用封装集合重构有更好的可扩展性。

    封装集合类
    public class EncapsulateCollectionClass
        {
            
    private System.Collections.Hashtable _hasntable=new System.Collections.Hashtable();
            
    private int _min;
            
    private int _max;

            
    public EncapsulateCollectionClass( )
            {
            }
            
    public int Min
            {
                
    get { return _min; }
                
    set { _min = value; }
            }

            
    public int Max
            {
                
    get { return _max; }
                
    set {  _max = value; }
            }

            
    public System.Collections.Hashtable UsingObjects
            {
                
    get { return _hasntable; }
            }
            
    public void Add(UsingObject obj)
            {
                
    if (obj.Id > Min&&obj.Id<Max)
                {
                    
    if (!_hasntable.Contains(obj.Id))
                    {
                        _hasntable.Add(obj.Id, obj.Name);
                    }
                }
            }

            
    public void Remove(UsingObject obj)
            {
                if (obj.Id > Min && obj.Id < Max)
                {
                    
    if (_hasntable.Contains(obj.Id))
                    {
                        _hasntable.Remove(obj.Id);
                    }
                }
            }

       

                如上黄线标注所示,条件---->集合的add/remove操作中包含其他的相关逻辑。

             效果--->不直接在集合上进行操作的方式来向类的使用者隐藏类中的完整集合。

  • 相关阅读:
    C# 反射
    WinForm资源管理器开发(TreeView&ListView)
    枚举——完美立方
    关于考证
    人工智能时代,程序员要不要精通算法?
    程序员需要掌握哪些软技能?
    Android数据解析——JSON
    C# 数组转json
    jQuery跨域调用Web API
    oracle 创建表同时添加注释
  • 原文地址:https://www.cnblogs.com/jasenkin/p/1799364.html
Copyright © 2011-2022 走看看