Adapter Design Pattern in C#






4.56/5 (11 votes)
Adapter Design Pattern in C#
Introduction
This trick is about how to implement the Adapter design pattern in C#.
Background
Design patterns are general reusable solutions to common problems that occurred in software designing. There are broadly 3 categories of design patterns, i.e., Creational, Behavioral and Structural.
Adapter design pattern comes under the category of Structural Design pattern.
It is a design pattern that translates one interface for a class into a compatible interface. An adapter allows classes to work together that normally could not because of incompatible interfaces, by providing its interface to clients while using the original interface.
(Source: Adapter Pattern)
Using the Code
The adapter pattern is useful when we need to implement the new functionality without disturbing the existing function or if we do not have access to the existing code, i.e., we can only call that function.
The code below illustrates the example:
-
Suppose, there is a class:
Adaptee
with functionExistingFunction()
as shown below:// Existing Function that we need to use class Adaptee { public string ExistingFunction() { //Some Processing return "Some Output String"; } }
-
Please note that the above function returns some specific
string
. Now we want to communicate with the above class with our interface and want to do the same processing thatExistingFunction
is doing. But we want some custom outputstring
. For this, we need the following code.Below is the Target Interface:
// Target Interface that need to use interface ITarget { string CustomFunction(); }
Now, below is the
Adapter
class which provides the communication betweenAdaptee
class and target Interface:// Implementing the required new function class Adapter : Adaptee, ITarget { public string CustomFunction() { return "New output: " + ExistingFunction(); } }
Finally, the Client code looks like:
Adapter objAdaptor = new Adapter(); string sStr = objAdaptor.CustomFunction();