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操作中包含其他的相关逻辑。

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

  • 相关阅读:
    Spark Streaming 中管理 Kafka Offsets 的几种方式
    Kafka 在华泰证券的探索与实践
    Kafka 客户端是如何找到 leader 分区的
    关于Java中如何判断字符串是否为json格式
    关于JAVA递归遍历树级菜单结构
    关于JDK8 三种时间获取方法以及日期加减
    关于在Java里面,时间的一些业务
    关于Java的IO通信
    关于git同时提交到2个仓库gitee github
    关于JVM——工具(二)
  • 原文地址:https://www.cnblogs.com/jasenkin/p/1799364.html
Copyright © 2011-2022 走看看