Strategy Pattern and Delegation
Learn how delegation helps avoid strong coupling.
We'll cover the following
Before moving on to discuss delegation, let’s understand the motivation behind it. Generally, after learning about inheritance, programmers make the mistake of using it very frequently.
Although inheritance is a very powerful concept, it increases the coupling between the base class and the derived class. For example, let’s say we have a base class named Sphere
and a derived class named Football
. Every time we make changes in the Sphere
class, it will directly affect the derived class Football
due to tight coupling. In some cases, it’s more desirable to avoid tight coupling. That is where delegation comes to the rescue.
In linguistics, delegation means “to transfer the authority of doing something from one person to another.” In computer science, delegation is an object-oriented principle in software engineering where one object delegates its operation to another object. So, instead of inheritance in delegation, one class will delegate its operation to another class.
To understand this better, let’s look at an example.
Example
Let’s take two classes named Sphere
and Football
. Instead of inheriting the Sphere
class, the Football
class will delegate its operation (in this case, calculating volume) to the Sphere
class. The Football
class will have an instance s
of the Sphere
class, and through that object, it will call the getVolume()
method.
The Football
class must now explicitly forward requests to its sphere instance s
, whereas previously, it would have inherited them.
In the diagram below, the Football
class delegated its volume action to a sphere instance s
.
Get hands-on with 1400+ tech skills courses.