ConstructiCat Logo
CodeBust.
Browse section ▾

Extract Interface.

Problem

Multiple clients are using the same part of a class interface. Another case: part of the interface in two classes is the same.

Solution

Move this identical portion to its own interface.

##Example

Before
Employee getRate()hasSpecialSkill()getName()getDepartment()
After
«interface» Billable +getRate()+hasSpecialSkill() Employee +getRate()+hasSpecialSkill()+getName()+getDepartment()

##Why Refactor

  1. Interfaces are very apropos when classes play special roles in different situations. Use Extract Interface to explicitly indicate which role.

  2. Another convenient case arises when you need to describe the operations that a class performs on its server. If it’s planned to eventually allow use of servers of multiple types, all servers must implement the interface.

##How to Refactor

  1. Create an empty interface.

  2. Declare common operations in the interface.

  3. Declare the necessary classes as implementing the interface.

  4. Change type declarations in the client code to use the new interface.