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

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

  • 相关阅读:
    一个在线的C++帮助文档网站
    linux 学习笔记 (四)
    类的static成员函数和const成员函数
    Linux的inode、软链接、硬链接
    常用linux命令(三)
    多语言调用之 C++ 调用 Java JNI
    多语言调用之 Java调用C/C++
    NHibernate 操作原生SQL以及查询DataTable,DataSet
    DataGridView控件用法合集
    Java AOP实战 寻找SQL的引用路径
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892582.html
Copyright © 2011-2022 走看看