博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
31天重构学习笔记9. 提取接口
阅读量:6125 次
发布时间:2019-06-21

本文共 1501 字,大约阅读时间需要 5 分钟。

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

 

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

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

转载于:https://www.cnblogs.com/ywsoftware/archive/2013/02/05/2892582.html

你可能感兴趣的文章
linux升级OpenSSL
查看>>
AudioRecord和AudioTrack使用实例
查看>>
debian制作包相关笔记之配置相关
查看>>
Linux笔记之目录配置
查看>>
我的友情链接
查看>>
Ubuntu安装JDK7(Oracle JDK)
查看>>
centos5.4时间同步shell
查看>>
软件测试 博客收集
查看>>
在 SVG 中添加交互性
查看>>
未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。...
查看>>
Sublime Text3 好用的插件
查看>>
url encode
查看>>
我的友情链接
查看>>
SEO工作之数据分析(一)
查看>>
查看命令运行所需要的库支持
查看>>
replace into… ON DUPLICATE KEY UPDATE
查看>>
怎么查服务的配置文件和端口号
查看>>
Ubuntu-11.10之 Samba服务器安装
查看>>
CSS选择器
查看>>
小米非常好!
查看>>