Friend spotlight!
Whimsical Animations course
Friend spotlight!
NEW Whimsical Animations course
Friend spotlight! NEW Whimsical Animations course
huge discount only this week
Friend spotlight! Want to make your project stand out? NEW Whimsical Animations course huge discount only this week

Remove Middle Man

Problem

A class has too many methods that simply delegate to other objects.

Solution

Delete these methods and force the client to call the end methods directly.

Before
Remove Middle Man - Before
After
Remove Middle Man - After

Why Refactor

To describe this technique, we'll use the terms from Hide Delegate, which are:

  • Server is the object to which the client has direct access.

  • Delegate is the end object that contains the functionality needed by the client.

There are two types of problems:

  1. The server-class doesn't do anything itself and simply creates needless complexity. In this case, give thought to whether this class is needed at all.

  2. Every time a new feature is added to the delegate, you need to create a delegating method for it in the server-class. If a lot of changes are made, this will be rather tiresome.

How to Refactor

  1. Create a getter for accessing the delegate-class object from the server-class object.

  2. Replace calls to delegating methods in the server-class with direct calls for methods in the delegate-class.