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 接口进行调用。

  • 相关阅读:
    js--事件--事件代理
    bind call apply 的区别和使用
    自己手动用原生实现bind/call/apply
    HLSL GLSL CG着色语言比较
    AABB和OBB包围盒简介
    BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC
    UE4蓝图简介
    3D MAX脚本原理
    VC中GetLastError 获取错误信息的使用
    最强偏振3D播放器TriDef 3D安装+全格式播放配置
  • 原文地址:https://www.cnblogs.com/yplong/p/5300096.html
Copyright © 2011-2022 走看看