提取接口
问题
多个客户端使用类接口的相同部分。另一种情况:两个类中的部分接口是相同的。
解决方案
将这个相同的部分移动到它自己的接口。
之前

后

为什么重构
当类在不同情况下扮演特殊角色时,接口非常合适。使用提取接口显式地指示哪个角色。
当您需要描述类在其服务器上执行的操作时,还会出现另一种方便的情况。如果计划最终允许使用多种类型的服务器,那么所有服务器都必须实现该接口。
知道就好
提取接口只允许隔离公共接口,而不隔离公共代码。换句话说,如果类包含重复的代码,提取接口不会帮助您重复数据删除。
尽管如此,这个问题可以通过应用来缓解提取类将包含复制的行为移动到单独的组件,并将所有工作委托给该组件。如果常见的行为规模较大,则始终可以使用提取超类.当然,这甚至更简单,但请记住,如果您采用这条路径,您将只获得一个父类。
如何重构
创建一个空接口。
在接口中声明常用操作。
声明必要的类来实现接口。
更改客户端代码中的类型声明以使用新接口。