Wzorzec projektowe – Fasada

Opublikowany Autor Piotr CudnikDodaj komentarz

Kolejnym wzorcem projektowym, który chciałem przybliżyć  jest fasada. Wzorzec projektowy fasada jest jednym z najprostszych wzorców projektowych.  Wystarczy skojarzyć go sobie z fasadą budynku. Z zewnątrz nie widać co dokładnie znajduje się w środku. Widać tylko fasadę budynku (kolor ściany i materiał z jakiego jest wykonany). Stąd pochodzi nazwa tego wzorca.  Fasada przykrywa to co jest w wewnątrz danej metody, klasy . Wystawia na zewnątrz proste, przejrzyste metody, które programista może wykorzystać bez potrzeby zaglądania do implementacji dostarczonych bibliotek czy podsystemów.  Poniżej pokazano przykład fasady.

 

 

public class Fasada
{
    public void Operacja1()
    {
        Element1 element1 = new Element1();
        element1.Wykonaj();
        Console.WriteLine("Wykonano Element1");
    }

    public void Operacja2()
    {
        Element2 element2 = new Element2();
        element2.Wykonaj();
        Console.WriteLine("Wykonano Element2");
        element2.WykonajElememnt3();
        Console.WriteLine("Wykonano Element3");
    }
}

Stosowanie fasady pozwala programistom uniknąć wczytywania się w złożoność dostarczonego kodu. Doskonale nadaje się do wykorzystania pisania bibliotek czy podsystemów. Takie elementy wytwarzanego oprogramowania często generują dużo złożonych linii kodu.  Skomplikowana logika niekoniecznie musi  być interesująca dla programistów, którzy chcą skorzystać z danej funkcjonalności. Najlepszym sposobem jest stworzenie dla bibliotek czy podsystemów fasady. Znacznie ułatwi to w przyszłości prace z komponentami  oprogramowania. Fasada również może pojawić się w trakcie refaktoryzacji kodu. Jest to naturalny proces, gdy podczas porządkowania kodu uznamy, że grupę kilku funkcjonalności warto przenieść  wyżej do osobnej klasy.

Podsumowanie

Wzorzec fasada ułatwia czytelność dostarczonego kodu. Szczególnie przydatne jest podczas pisania bibliotek czy podsystemów. Wprowadza podział systemu na warstwy, które w przyszłości mogą być niezależnie rozwijane.