理解:提取接口的意思是,多于一个类共同使用某个类中的方法或属性,那么我们可以把这些方法和属性提出来,作为一个单独的接口。这样的好处是解除代码间的依赖,降低耦合性。

详解

先看重构前的代码:

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

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

重构后的代码:

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

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

最新文章

  1. mysql-data-dumper
  2. Ionic开发实战
  3. PHP 使用reflection时的问题,以及解决方案
  4. 使用java自带的定时任务ScheduledThreadPoolExecutor
  5. Rman备份的保留策略(retention policy)
  6. [原]poj-2680-Choose the best route-dijkstra(基础最短路)
  7. React Jest测试
  8. sqlite3使用教程1 SQLite 命令
  9. 【转】SharePoint 2013 stand alone服务器安装
  10. 【转】C++之内部类(嵌套类)与外部类及友元
  11. mysql获取各种日期
  12. 大数据时代之hadoop(二):hadoop脚本解析
  13. SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)
  14. 第1章 ssh命令和SSH服务详解
  15. org.springframework.dao.InvalidDataAccessResourceUsageException: Unexpected cursor position change. Spring Batch 错误
  16. python 的 字节码 导入使用
  17. html导出pdf的四种方式
  18. Java日常错误及需要注意细节,持续更新......
  19. jQuery (二)DOM 操作
  20. kue

热门文章

  1. vlc android 移植版编译
  2. 结合仓库设计MVC控制器
  3. 【转帖】ECLIPSE-JEE-LUNA-SR2官方汉化教程
  4. [iOS Xcode8]上传AppStore 无法构建版本 没有➕号
  5. Pro ASP.NET MVC –第五章 使用Razor
  6. [leetcode]Excel Sheet Column Number
  7. -webkit-min-device-pixel-ratio的常见值对照
  8. 译:在C#中使用LINQ To SQL
  9. HTML CSS——margin和padding的学习
  10. slf4j日志系统