zoukankan      html  css  js  c++  java
  • 31天重构学习笔记9. 提取接口

    概念:本文中的“提取接口” 是指超过一个的类要使用某一个类中部分方法时,我们应该解开它们之间的依赖,让调用者使用接口,这很容易实现也可以降低代码的耦合性。

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

    namespace LosTechies.DaysOfRefactoring.ExtractInterface.Before
    {
    public class ClassRegistration
    {
    public void Create()
    {
    // create registration code
    }

    public void Transfer()
    {
    // class transfer code
    }

    public decimal Total { get; private set; }
    }

    public class RegistrationProcessor
    {
    public decimal ProcessRegistration(ClassRegistration registration)
    {
    registration.Create();
    return registration.Total;
    }
    }
    }

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

    namespace LosTechies.DaysOfRefactoring.ExtractInterface.After
    {
    public interface IClassRegistration
    {
    void Create();
    decimal Total { get; }
    }

    public class ClassRegistration : IClassRegistration
    {
    public void Create()
    {
    // create registration code
    }

    public void Transfer()
    {
    // class transfer code
    }

    public decimal Total { get; private set; }
    }

    public class RegistrationProcessor
    {
    public decimal ProcessRegistration(IClassRegistration registration)
    {
    registration.Create();
    return registration.Total;
    }
    }
    }

    总结:这个重构策略也是一个常见的运用,很多设计模式也会在其中运用此思想(如简单工程、抽象工厂等都会通过接口来解开依赖)。

  • 相关阅读:
    UML建模之时序图(Sequence Diagram)
    UML统一建模语UML2和EnterpriseArchitect
    FTP服务器的搭建
    Ubuntu下Apache重启错误:Could not reliably determine解决
    JSP的优势 和劣势 与php的比较
    [置顶] Ajax 初步学习总结
    pv ticketlock解决虚拟环境下的spinlock问题
    Tomcat从零开始(十)Loader
    HDU 4740 The Donkey of Gui Zhou (模拟)
    关于cvScalar的那些事
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892582.html
Copyright © 2011-2022 走看看