重构第9天:提取接口(Extract Interface)
2024-08-24 15:02:45
理解:提取接口的意思是,多于一个类共同使用某个类中的方法或属性,那么我们可以把这些方法和属性提出来,作为一个单独的接口。这样的好处是解除代码间的依赖,降低耦合性。
详解:
先看重构前的代码:
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 接口进行调用。
最新文章
- mysql-data-dumper
- Ionic开发实战
- PHP 使用reflection时的问题,以及解决方案
- 使用java自带的定时任务ScheduledThreadPoolExecutor
- Rman备份的保留策略(retention policy)
- [原]poj-2680-Choose the best route-dijkstra(基础最短路)
- React Jest测试
- sqlite3使用教程1 SQLite 命令
- 【转】SharePoint 2013 stand alone服务器安装
- 【转】C++之内部类(嵌套类)与外部类及友元
- mysql获取各种日期
- 大数据时代之hadoop(二):hadoop脚本解析
- SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)
- 第1章 ssh命令和SSH服务详解
- org.springframework.dao.InvalidDataAccessResourceUsageException: Unexpected cursor position change. Spring Batch 错误
- python 的 字节码 导入使用
- html导出pdf的四种方式
- Java日常错误及需要注意细节,持续更新......
- jQuery (二)DOM 操作
- kue