析取类或接口
将一个类分割为更小、针对性更强的类;从中析取出一系列更精细的接口
public class InvoiceService { public string CreateInvoice(Invoice invoice){...} public string ProcessPayment(Invoice invoice,double amount){...} public double GetAmountOwed(Invoice invoice){...} public double GetTotalAmountInvoiceLastFY(Customer customer){...} public double GetTotalAmountPaidLastFY(Customer customer){...} }
该类执行了几个相关但却互相分离的功能,供系统的不同部分使用
通过析取该类的接口,对其进行重构
public interface IInvoiceCreatingService { string CreateInvoice(Invoice invoice); }
public interface IInvoicePaymentService { string ProcessPayment(Invoice invoice,double amount); double GetAmountOwed(Invoice invoice); }
public interface IInvoiceReportingService { double GetTotalAmountInvoiceLastFY(Customer customer); double GetTotalAmountPaidLastFY(Customer customer); }
重构结果:
public class InvoiceService:IInvoiceCreatingService,IInvoicePaymentService,IInvoiceReportingSrvice { public string CreateInvoice(Invoice invoice){...} public string ProcessPayment(Invoice invoice,double amout){...} public double GetAmountOwed(Invoice invoice){...} public double GetToatlAmountInvoicedLastFY(Customer customer){...} public double GetTotalAmountPaidLastFY(Customer customer){...} }