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

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

  • 相关阅读:
    Java之美[从菜鸟到高手演变]之设计模式
    Akka边学边写(1)-- Hello, World!
    [D3 + AngularJS] 15. Create a D3 Chart as an Angular Directive
    [D3] 14. Line and Area Charts with D3
    [D3] 13. Cleaner D3 code with selection.call()
    [D3] 12. Basic Transitions with D3
    [D3] 9. Scatter Plot
    [D3] 8. Margins
    [D3] 7. Quantitative Scales
    Runoob-Java-高级教程-实例-字符串:09. Java 实例
  • 原文地址:https://www.cnblogs.com/jasenkin/p/1799364.html
Copyright © 2020-2023  润新知