重构——64提炼接口(Extract Interface)

提炼接口(Extract Interface)

若干客户使用类接口中的同一子集,或者两个类的接口有部分相同;将相同的子类提炼到一个独立接口中

一、动机

1、接口对于java程序的设计方式有着巨大的影响

2、如果某个类在不同环境下扮演截然不同的角色,使用接口就是个好主意

二、做法

1、新建一个接口

2、在接口中声明待提炼类的共通操作

3、让相关的类实现上述接口

4、调整客户端的类型声明,令其使用该接口

时间: 2024-09-30 15:11:57

重构——64提炼接口(Extract Interface)的相关文章

面向对象编程语言中的接口(Interface)

在大多面向对象的编程语言中都提供了Interface(接口)的概念.如果你事先学过这个概念,那么在谈到"接口测试"时,会不会想起这个概念来!?本篇文章简单介绍一下面向对象编程语言中的Interface.     Java中的Interface                                                                   在Java中定义接口使用interface关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不

[Java] 接口(Interface)与 抽象类 (Abstract)使用规则和区别

版权声明:请尊重个人劳动成果,转载注明出处,谢谢! 目录(?)[+] 接口(Interface) 是抽象方法的集合,接口通常以interface来声明. 一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念. 类描述对象的属性和方法.接口则包含类要实现的方法.  除非实现接口的类是抽象类,否则该类要定义接口中的所有方法. 接口无法被实例化,但是可以被实现.一个实现接口的类,必须实现接口内所描述的所有方法(所有方法都是抽象的方法),否

浅析php接口操作interface关键字的用法及应用实例

接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容.用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容. 我们可以通过interface来定义一个接口,就像定义一个标准的类一样,但其中定义所有的方法都是空的. 接口中定义的所有方法都必须是public,这是接口的特性. 实现   要实现一个接口,可以使用implements操作符.类中必须实现接口中定义的所有方法,否则会报一个fatal错误.如果要实现多个接口,可以用逗号来分隔多个接口的名称.

重构——12提炼类(Extract Class)

提炼类(Extract Class) 并发和事务的风险:某个类做了两个类做的事:建立一个新类,将相关的字段和函数从旧类搬移到新类 一.动机 1.让类的抽象更清楚,让类的责任更明确 2.如果某些数据和函数总是一起出现,某些数据经常同时变化甚至彼此相依,这就表示你应该将它们分离出去 3.子类化的时候你发现某些特性需要以一种方式来子类化,另外一些特性需要以另一种方式子类化,这就意味着你需要分解原来的类 二.做法 1.决定如何分解类所负的责任 2.建立一个新类,用以表现从旧类分离出来的责任 3.建立从"

重构——63提炼超类(Extract Superclass)

提炼超类(Extract Superclass) 两个类有相似特性:为这两个类建立一个超类,将相同的特性搬移到超类 一.动机 减少重复代码 二.做法 1.为原本的类新建一个空白的抽象超类 2.运用Pull Up Field,Pull Up Mehtod,Pull Up Constructor Body逐一将子类的共同元素上移到超类 3.每次上移后,编译并测试 4.检查留在子类中的函数,Extract Method,Pull Up Method,也许可以Form Template Method 5

重构——1提炼函数(Extract Method)

提炼函数(Extract Method) 你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途. 一.动机 1.每个函数的粒度都小,那么被复用的几率就大 2.函数的长度不是问题,关键在于函数名称和函数本体之间的语义距离 3.使高层函数读起来向一系列注释 4.如果函数都是细粒度,那么函数覆盖也会更容易些 二.做法 1.创建函数,名字要起好 2.转移代码 3.检查提炼出的代码是否引用了作用域限于原函数的变量(临时变量和源函数参数) 4.检查是否有任何的

重构——62提炼子类(Extract Subclass)

提炼子类(Extract Subclass) 类中的某些特性只被某些实例用到:新建一个子类,将上面所说的那一部分特性移到子类中 一.动机 你发现类中的某些行为只被一部分实例用到,其他实例不需要它们 二.做法 1.为源类定义一个新的子类 2.为这个新的子类提供构造函数 3.找出调用超类构造函数的所有地点.如果它们需要的是新建的子类,令它们改而调用新的构造函数 4.逐一使用Push Down Method和Push Down Field将源类特性移到子类去 5.Replace Conditional

重构——72提炼继承体系(Extract Hierarchy)

提炼继承体系(Extract Hierarchy) 你有某个类做了太多工作,其中一部分工作以大量条件表达式完成 建立继承体系,以一个子类表示一种特殊情况 动机 渐进式设计

C++:接口继承(interface) 和 实现继承(implementation) 详解

继承接口和实现, 主要包含三种方式: 1. 只继承接口, 纯虚函数; 2. 继承接口和实现, 允许覆写(override), 虚函数; 3. 继承接口和实现, 不允许覆写(override), 非虚函数; 1. 纯虚函数: 只继承接口, 但是派生类必须实现其接口; 纯虚函数也可以包含实现, 但是只能在指明类(即, class::)的时候使用 2. 虚函数: 继承接口和实现, 派生类可以覆写(override), 也可以使用默认版本, 即基函数(base)版本; 纯虚函数约束程序更多, 虚函数更灵