马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

重构之移除中间人(RemoveMiddleMan)

  [复制链接]
查看2671 | 回复4 | 2019-3-14 22:46:29 | 显示全部楼层 |阅读模式
        昨天我们讲了“隐藏"委托关系"(HideDelegate)”,因为了减少类信息的泄漏而要把类间的委托关系隐藏起来。但当我们建立大量委托行为后,使用“隐藏"委托关系"(HideDelegate)”的成本就非常大了;我们要记住大量的委托函数,反而不利于代码的理解、代码的可读性也相对的降低了(函数多了会造成视觉疲劳,毕竟我们每天都要看大量的代码、大量的资料),所以当我们感觉到类的委托函数有增多的趋势时,我们就要把这委托函数给去掉,我们称这种手法为"移除中间人(RemoveMiddleMan)"。
      从上面的讲解,聪明的你一定发现了其实“隐藏"委托关系"(HideDelegate)”跟"移除中间人(RemoveMiddleMan)"刚好是相反的。我们很难说什么程度适合用“隐藏"委托关系"(HideDelegate)”,什么时候用"移除中间人(RemoveMiddleMan)";但还好我们并不用去担心这一问题,因为你可以随心所欲的进行调整,只要你觉得哪种合适就用哪种。对代码进行重构的意义就在于:你永远不必说对不起——只要把出问题的地方修补好就行。
     代码如下,可供参考
重构前
[AppleScript] 纯文本查看 复制代码
class Person
 {
     private Department _department;
 
     public Department Department { get; set; }
 
     public Person getModerager()
     {
         return _department.getManager();
     }
 }

[C#] 纯文本查看 复制代码
class Department
   {
       private string _chargeCode;
 
       private Person _managet;
        
       public Department(Person manager)
       {
           _managet = manager;
       }
 
       public Person getManager()
       {
           return _managet;
       }
   }


重构后
[C#] 纯文本查看 复制代码
class Department
   {
       private string _chargeCode;
 
       private Person _managet;
        
       public Department(Person manager)
       {
           _managet = manager;
       }
 
       public Person getManager()
       {
           return _managet;
       }
   }


参考文献
重构——改善既有代码的设计   【美】Martin Fowler 著
                                                                         熊节 译


ibcadmin | 2019-3-15 14:22:57 | 显示全部楼层
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
wscuw | 2019-8-2 14:37:13 | 显示全部楼层
完全支持你,大家都会顶你












中国2019年合法代怀孕
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则