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;
    }
    }
    }

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

  • 相关阅读:
    零基础学python-8.2 列表的基本操作、迭代和解析
    零基础学python-8.1 列表
    轻松python文本专题-字符串开头或者结尾匹配
    轻松python文本专题-maketrans和translate
    轻松python文本专题-字符串逐字符反转以及逐单词反转
    轻松python文本专题-拼接、合并字符串
    创建jsp+Servlet+JavaBean+JDBC+MySQL项目的过程
    request传递参数
    表单如何与Servlet控制器关联
    JSTL标签库
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892582.html
Copyright © 2011-2022 走看看