Дизайн паттерндер. 7-сабақ. Структуралық паттерндер (Structural patterns)

Блог аты abzalkalimbetov
Аты: Adapter
Проблема: Екі сәйкес келмейтін интерфейсті байланыстыру. Мысалға сізде екі модуль бар: Биллинг және HR. Екі жақта да Employee (жұмыскер) жайлы деректер бар, бірақ жазбаларының форматы, типтері сәйкес келмейді. Биллинг модулі(Клиент) Employee объектісін алу керек.
Шешім: Екеуін байланыстыратын Adapter класын құру. Шын өмірде Адаптер мысалына розеткаға тығылатын ноутбук адаптерлерін келтіруге болады
// Биллинг қолданатын интерфейс
interface Employer
{
    public String name();
}

class BillingEmployer implements Employer
{
   private String name;
   public String name() { return name; }
}

// HR-дағы Employee класы
class HREmployer
{
    private String firstName;
    private String lastName;
    public HREmployer(String firstName, String lastName) {
        this.firstName = lastName;
        this.lastName = lastName;
    }
    public String lastName() {}
    public String firstName() {}
}

class HREmployerAdapter implements Employer
{
    private HREmployer e;

    public HREmployerAdapter(HREmployer e)
    {
        this.e = e;
    }

    public String name()
    {
        return t.firstName()+t.lastName();
    }
}

...
public void someClientCode() {
    Employee e = new HREmployerAdapter(new HREmployer("Аскар","Аскаров"));
    System.out.println(e.getName());
} 

Нәтиже: Екі класс интерфейстерін және құрылымдарын өзгертпей-ақ жұмыс жасайды

0 пікір

Тек қана тіркелген және авторизациядан өткен қолданушылар пікір қалдыра алады.