zoukankan      html  css  js  c++  java
  • 31天重构指南之二十九:去除中间人对象

    今天要说的重构来自于Folwers的重构目录,你可以在这里查看。

    有时在你的代码会存在一些幽灵类,Fowler称它们为“中间人”,中间人类除了调用别的对象之外不做任何事情,所以中间人类没有存在的必要,我们可以将它们从代码中删除。

       1: public class Consumer
       2: {
       3:     public AccountManager AccountManager { get; set; }
       4:  
       5:     public Consumer(AccountManager accountManager)
       6:     {
       7:         AccountManager = accountManager;
       8:     }
       9:  
      10:     public void Get(int id)
      11:     {
      12:         Account account = AccountManager.GetAccount(id);
      13:     }
      14: }
      15:  
      16: public class AccountManager
      17: {
      18:     public AccountDataProvider DataProvider { get; set; }
      19:  
      20:     public AccountManager(AccountDataProvider dataProvider)
      21:     {
      22:         DataProvider = dataProvider;
      23:     }
      24:  
      25:     public Account GetAccount(int id)
      26:     {
      27:         return DataProvider.GetAccount(id);
      28:     }
      29: }
      30:  
      31: public class AccountDataProvider
      32: {
      33:     public Account GetAccount(int id)
      34:     {
      35:         // get account
      36:     }
      37: }
     
    要对上面的代码应用重构是简单明了的,我们只需要移除掉中间人对象就可以了。
       1: public class Consumer
       2: {
       3:     public AccountDataProvider AccountDataProvider { get; set; }
       4:  
       5:     public Consumer(AccountDataProvider dataProvider)
       6:     {
       7:         AccountDataProvider = dataProvider;
       8:     }
       9:  
      10:     public void Get(int id)
      11:     {
      12:         Account account = AccountDataProvider.GetAccount(id);
      13:     }
      14: }
      15:  
      16: public class AccountDataProvider
      17: {
      18:     public Account GetAccount(int id)
      19:     {
      20:         // get account
      21:     }
      22: }

    原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/28/refactoring-day-29-remove-middle-man.aspx

  • 相关阅读:
    php操作apache服务器上的ftp
    win7配置ftp服务
    php访问远程服务器上的文件
    php操作ini配置文件
    php操作redis简单例子
    win7 32位安装php redis驱动
    mysql事务处理
    php使用PDO连接mysql数据库
    远程连接redis
    设置表格td宽度
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1597289.html
Copyright © 2011-2022 走看看