The adapter design pattern is used to bridge two incompatible interfaces. It involves a single class called adapter that is responsible for communication between two independent or incompatible interfaces. It makes two incompatible interfaces work together.
It includes four components.
- Target: It is an interface that is used by the client to achieve its request.
- Adapter: It is a class that implements the Target interface and inherits the Adaptee class. It provides communication between the Client and Adaptee.
- Adaptee: It is a class with the functionality required by the client. However, it does not support the client’s interface.
- Client: It is a class that interacts with a type that implements a Target interface.
The Adapter Design patterns are often implemented in two ways.
- Object Adapter Design
- Class Adapter Design
creating the Employee model and a simple object into an XML converter example:
// create Employee Model:
class Employee
{
public string Emp_Name { get; set; }
public string Emp_Address { get; set; }
public int Emp_Id { get; set; }
}
// Employee details:
class EmployeeDataProvider
{
public static List
{
new Employee{ Emp_Id=101,Emp_Name="Ajay",Emp_Address="Mohali"},
new Employee{ Emp_Id=102,Emp_Name="Abhi",Emp_Address="Chd"},
new Employee{ Emp_Id=103,Emp_Name="Sidh",Emp_Address="Mohali"},
new Employee{ Emp_Id=104,Emp_Name="Rajesh",Emp_Address="Chd"},
new Employee{ Emp_Id=105,Emp_Name="Ravi",Emp_Address="Mohali"}
};
}
// converter Xml
public class XmlConverter
{
public XDocument GetXML()
{
var xDocument = new XDocument();
var xElement = new XElement("Employee");
var xAtributes = EmployeeDataProvider.GetData()
.Select(c => new XElement("Employee",
new XAttribute("Employee_Id",c.Emp_Id),
new XAttribute("Employee_Name", c.Emp_Name),
new XAttribute("Employee_Address",c.Emp_Address)));
xElement.Add(xAtributes);
xDocument.Add(xElement);
Console.WriteLine(xDocument);
return xDocument;
}
}
Implement a JsonConverter class:
class JsonConverter
{
private IEnumerable
public JsonConverter(IEnumerable
{
_employees = employees;
}
public void ConvertToJson()
{
var jsonemployee = JsonConvert.SerializeObject(_employees, Formatting.Indented);
Console.WriteLine("\n Print Json List\n");
Console.WriteLine(jsonemployee);
}
}
Create interface:
public interface IXmlToJson
{
void ConvertXmlToJson();
}
XmlToJsonAdapter class that will implement the IXmlToJson interface:
public class XmlToJsonAdapter: IXmlToJson
{
private readonly XmlConverter _xmlConverter;
public XmlToJsonAdapter(XmlConverter xmlConverter)
{
_xmlConverter = xmlConverter;
}
public void ConvertXmlToJson()
{
var employee = _xmlConverter.GetXML()
.Element("Employee")
.Elements("Employee")
.Select(c => new Employee
{
Emp_Id = Convert.ToInt32(c.Attribute("Employee_Id").Value),
Emp_Name = c.Attribute("Employee_Name").Value,
Emp_Address=c.Attribute("Employee_Address").Value
});
new JsonConverter(employee).ConvertToJson();
}
}
Main class:
class Program
{
static void Main(string[] args)
{
var xmlConverter = new XmlConverter();
var adapter = new XmlToJsonAdapter(xmlConverter);
adapter.ConvertXmlToJson();
}
}
If you have skills in PHP programming and you want to enhance your career in this field, a PHP certification from StudySection can help you reach your desired goals. Both beginner level and expert level PHP Certification Exams are offered by StudySection along with other programming certification exams.