提取接口

来源:互联网 发布:旋转平移矩阵 编辑:程序博客网 时间:2024/05/18 20:08

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

正文:如下代码所示,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;        }    }}

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

0 0