Fasada (wzór projektowy)

Ten artykuł może zawierać niepublikowane prace lub niezweryfikowane oświadczenia (październik 2014).

Możesz pomóc, dodając odniesienia lub usuwając niepublikowaną zawartość. Zobacz stronę dyskusji, aby uzyskać więcej informacji.

W inżynierii oprogramowania , wzór projektu (lub wzorzec projektowy ) fasada ma na celu ukryć złożoną konstrukcję i trudne do zrozumienia interfejsu (czym ukazał złożoność „naturalnie” wraz z rozwojem systemu sub-w pytaniu).

Cel

Fasada pomaga uprościć tę złożoność, zapewniając prosty interfejs dla podsystemu. Zwykle elewację uzyskuje się poprzez zmniejszenie funkcjonalności tego ostatniego, ale zapewnienie wszystkich niezbędnych funkcji dla większości użytkowników.

Fasada odzwierciedla złożoność interakcji między obiektami biznesowymi uczestniczącymi w przepływie pracy .

Fasada może służyć do:

Adapter jest stosowany, gdy interfejs dobrze zdefiniowane muszą być przestrzegane. Fasada służy do uproszczenia korzystania z API.

Struktura

FacadeDesignPattern.png

Fasada Elewacja pomija pakiety 1, 2 i 3 z pozostałej części aplikacji. Klienci Obiekty używające wzorca projektowego Fasada w celu uzyskania dostępu do zasobów abstrakcyjnych.

Przykład

Jawa

Poniższy przykład ukrywa skomplikowany interfejs API do zarządzania kalendarzem za prostszą fasadą. To pokazuje :

Date: 1980-08-20 20 jours après : 1980-09-09 import java.util.*; // Façade class UserfriendlyDate { GregorianCalendar gcal; public UserfriendlyDate(String isodate_ymd) { String[] a = isodate_ymd.split("-"); gcal = new GregorianCalendar(Integer.parseInt(a[0]), Integer.parseInt(a[1])-1 /* !!! */, Integer.parseInt(a[2])); } public void addDays(int days) { gcal.add(Calendar.DAY_OF_MONTH, days); } public String toString() { return String.format("%1$tY-%1$tm-%1$td", gcal); } } // Client class FacadePattern { public static void main(String[] args) { UserfriendlyDate d = new UserfriendlyDate("1980-08-20"); System.out.println("Date : "+d); d.addDays(20); System.out.println("20 jours après : "+d); } }