Adaptor pattern
Key 5: Bridging class interfaces.
This pattern is used to adapt a given class to a new interface. It solves the problem for an interface mismatch. To demonstrate this, let's assume that we have an API function that creates a competition to run different animals. Animals should have a running_speed
function, which tells their speed to compare them. Cat
is one such class. Now, if we have a Fish
class in a different library, which also wants to participate in the function, it must be able to know its running_speed
function. As changing the implementation of Fish
is not good option, we can create an adaptor
class that can adapt the Fish
class to run by providing the necessary bridge:
def running_competition(*list_of_animals): if len(list_of_animals)<1: print("No one Running") return fastest_animal = list_of_animals[0] maxspeed = fastest_animal.running_speed() for animal in list_of_animals[1:]: runspeed = animal.running_speed() ...