zoukankan      html  css  js  c++  java
  • 重构第9天:提取接口(Extract Interface)

    理解:提取接口的意思是,多于一个类共同使用某个类中的方法或属性,那么我们可以把这些方法和属性提出来,作为一个单独的接口。这样的好处是解除代码间的依赖,降低耦合性。

    详解

    先看重构前的代码:

     1  public class ClassRegistration
     2     {
     3         public void Create()
     4         {
     5             // create registration code
     6         }
     7 
     8         public void Transfer()
     9         {
    10             // class transfer code
    11         }
    12 
    13         public decimal Total { get; private set; }
    14     }
    15 
    16     public class RegistrationProcessor
    17     {
    18         public decimal ProcessRegistration(ClassRegistration registration)
    19         {
    20             registration.Create();
    21             return registration.Total;
    22         }
    23     }

    RegistrationProcessor 类只使用到了ClassRegistration 类中的Create方法和Total 字段,所以可以考虑把他们做成接口给RegistrationProcessor 调用。

    重构后的代码:

     1  public interface IClassRegistration
     2     {
     3         void Create();
     4         decimal Total { get; }
     5     }
     6 
     7     public class ClassRegistration : IClassRegistration
     8     {
     9         public void Create()
    10         {
    11             // create registration code
    12         }
    13 
    14         public void Transfer()
    15         {
    16             // class transfer code
    17         }
    18 
    19         public decimal Total { get; private set; }
    20     }
    21 
    22     public class RegistrationProcessor
    23     {
    24         public decimal ProcessRegistration(IClassRegistration registration)
    25         {
    26             registration.Create();
    27             return registration.Total;
    28         }
    29     }

    我们提取了一个IClassRegistration 接口,同时让ClassRegistration 继承此接口,然后调用端RegistrationProcessor就可以直接通过IClassRegistration 接口进行调用。

  • 相关阅读:
    禁止用户打开HTML页面调试
    Git 忽略提交 .gitignore
    PHP日期时间处理
    HTML页面中JavaScript能获取到的各种屏幕大小信息
    移动浏览器H5页面通过scheme打开本地应用
    Python爬虫利器:Beautiful Soup
    MySQL分页查询优化
    JavaScrpit中异步请求Ajax实现
    PHP反射机制
    CentOS下nginx php mysql 环境搭建
  • 原文地址:https://www.cnblogs.com/yplong/p/5300096.html
Copyright © 2011-2022 走看看