Адаптер на C #
- Особливості патерну на C #
- концептуальний приклад
- Program.cs: Приклад структури паттерна
- Output.txt: Результат виконання
- Адаптер на інших мовах програмування
Адаптер - це структурний патерн, який дозволяє подружити несумісні об'єкти.
Адаптер виступає прошарком між двома об'єктами, перетворюючи виклики одного в виклики зрозумілі іншому.
Особливості патерну на C #
складність:
Популярність:
Застосування: патерн можна часто зустріти в C # -код, особливо там, де потрібна конвертація різних типів даних або спільна робота класів з різними інтерфейсами.
Ознаки застосування патерну: Адаптер отримує конвертований об'єкт в конструкторі або через параметри своїх методів. Методи Адаптера зазвичай сумісні з інтерфейсом одного об'єкта. Вони делегують виклики вкладеному об'єкту, перетворивши перед цим параметри виклику в формат, підтримуваний вкладеним об'єктом.
концептуальний приклад
Цей приклад показує структуру паттерна Адаптер, а саме - з яких класів він складається, які ролі ці класи виконують і як вони взаємодіють один з одним.
Program.cs: Приклад структури паттерна
using System; namespace RefactoringGuru.DesignPatterns.Adapter.Conceptual {// Цільовий клас оголошує інтерфейс, з яким може працювати клієнтський // код. public interface ITarget {string GetRequest (); } // адаптованості клас містить деякий корисну поведінку, але його // інтерфейс несумісний з існуючим клієнтським кодом. Адаптується // клас потребує деякої доробки, перш ніж клієнтський код зможе // його використовувати. class Adaptee {public string GetSpecificRequest () {return "Specific request."; }} // Адаптер робить інтерфейс адаптованості класу сумісним з цільовим // інтерфейсом. class Adapter: ITarget {private readonly Adaptee _adaptee; public Adapter (Adaptee adaptee) {this._adaptee = adaptee; } Public string GetRequest () {return $ "This is '{this._adaptee.GetSpecificRequest ()}'"; }} Class Program {static void Main (string [] args) {Adaptee adaptee = new Adaptee (); ITarget target = new Adapter (adaptee); Console.WriteLine ( "Adaptee interface is incompatible with the client."); Console.WriteLine ( "But with adapter client can call it's method."); Console.WriteLine (target.GetRequest ()); }}}
Output.txt: Результат виконання
Adaptee interface is incompatible with the client. But with adapter client can call it's method. This is 'Specific request.'