Examples of implementation of the Adapter pattern in C#
Before studying this topic, it is recommended that you familiarize yourself with the following topic:
Contents
- 1. Structure of the Adapter pattern
- 2. The Adapter pattern for the class
- 3. Adapter for object
- Related topics
Search other websites:
1. Structure of the Adapter pattern
The Adapter pattern has two features, which differ in implementation and results:
- adapter for class (Figure 1). In this case, the inheritance mechanism is used;
- adapter for object (Figure 2). In this case, object composition is used.
Figure 1. Adapter for class
Figure 2. Adapter for object
⇑
2. The Adapter pattern for the class.
Below is an implementation of the Adapter pattern for a class, which contains the same names as shown in Figure 1.
// The Adapter pattern for the class. Solution in C# using System; using static System.Console; namespace ConsoleApp10 { // Adapts the Adaptee class to the ITarget interface through the Adapter intermediate class // The ITarget interface interface ITarget { public void Request(); } // The class whose method needs to be adapted to another system. // In this case, adapting the name of the SpecificRequest() method to the Request() method class Adaptee { // Some specific method public void SpecificRequest() { WriteLine("Adaptee.SpecificRequest()"); } } // Class Adapter - implements the ITarget interface and inherits the Adapter class class Adapter : Adaptee, ITarget { // Implementation of method Request() of interface ITarget public void Request() { // In the middle of the method, the Specific Request() method of the Adapter() class is called SpecificRequest(); } } // Class Client - gets a reference to ITarget interface class Client { // some method of class Client public void ClientMethod(ITarget target) { target.Request(); } } class Program { static void Main(string[] args) { // Demonstration of the Adapter pattern for a class. // Task. // You need to adapt the Adaptee instance to the needs of the Client instance. // 1. Create the instance of Client class Client client = new Client(); // 2. Create an instance of the Adapter class that references the ITarget interface ITarget target = new Adapter(); // 3. Pass target to the client client.ClientMethod(target); } } }
⇑
3. Adapter for object
The following code demonstrates the implementation of the Adapter pattern for an object from Figure 2.
// The Adapter pattern for the object. Solution in C# using System; using static System.Console; namespace ConsoleApp10 { // Adapts the Adaptee class to the Target interface via the Adapter intermediate class // Interface ITarget interface ITarget { public void Request(); } // The class whose method needs to be adapted to another system. // In this case, adapt the name of the SpecificRequest() method to the Request() method class Adaptee { // Some specified method public void SpecificRequest() { WriteLine("Adaptee.SpecificRequest()"); } } // Class Adapter - implements the ITarget interface class Adapter : ITarget { private Adaptee adaptee; // reference to Adaptee // Constructor public Adapter(Adaptee adaptee) { // initialize internal reference adaptee with parameter this.adaptee = adaptee; } // Implementation of Request() method of ITarget interface public void Request() { // In the middle of the method, the Specific Request() method of the Adapter() class is called adaptee.SpecificRequest(); } } // Class Client - receives a reference to ITarget interface class Client { // some method of class Client public void ClientMethod(ITarget target) { target.Request(); } } class Program { static void Main(string[] args) { // Demonstration of the Adapter pattern for an object. // Task. // You need to adapt the Adaptee instance to the needs of the Client instance. // 1. Let some instances of Client and Adaptee classes be given Client client = new Client(); Adaptee adaptee = new Adaptee(); // 2. Create an instance of the Adapter class, pass an instance of the Adaptee class // to the constructor of the Adapter class ITarget target = new Adapter(adaptee); // 3. Pass target to the client client.ClientMethod(target); } } }
⇑
Related topics
- Pattern Adapter. Review and research. Examples of implementation in C++
- Java. Examples of implementation of pattern Adapter
- Solving a problem using the Adapter pattern in Java and C#. Laboratory work. Adaptation of three methods
⇑