Intent

  • Egy alrendszerben lévő interfészekhez egységes interfész biztosítása.A facade egy magasabb szintű interfészt definiál, amely megkönnyíti az alrendszer használatát.
  • Egy bonyolult alrendszert egy egyszerűbb interfésszel csomagol.

Probléma

Az ügyfélközösség egy szegmensének egyszerűsített interfészre van szüksége egy összetett alrendszer teljes funkcionalitásához.

Discussion

A facade egy összetett alrendszer egyetlen interfészobjektumba való kapszulázását tárgyalja. Ez csökkenti az alrendszer sikeres kihasználásához szükséges tanulási görbét. Emellett elősegíti az alrendszer szétválasztását a potenciálisan sok ügyféltől. Másrészt, ha a Facade az egyetlen hozzáférési pont az alrendszerhez, az korlátozza azokat a funkciókat és rugalmasságot, amelyekre a “power usereknek” szükségük lehet.

A Facade objektumnak egy meglehetősen egyszerű támogatónak vagy segítőnek kell lennie. Nem szabad, hogy mindentudó orákulum vagy “isten” objektummá váljon.

Szerkezet

A Facade egy “rejtélybe burkolt rejtélyt rejtélybe burkolt rejtélyt” vesz, és egy olyan burkolatot vet be, amely megszelídíti a szoftver amorf és kifürkészhetetlen tömegét.

SubsystemOne és SubsystemThree nem lépnek kapcsolatba a SubsystemTwo belső komponenseivel.Ők a SubsystemTwoWrapper “homlokzatot” (azaz a magasabb szintű absztrakciót) használják.

Példa

A homlokzat egységes, magasabb szintű interfészt definiál egy alrendszerhez, ami megkönnyíti annak használatát. A fogyasztók akkor találkoznak a Facade-dal, amikor katalógusból rendelnek. A fogyasztó felhív egy számot, és beszél egy ügyfélszolgálati képviselővel. Az ügyfélszolgálati képviselő Facade-ként működik, és interfészt biztosít a rendelést teljesítő részleghez, a számlázási részleghez és a szállítási részleghez.

Check list

  1. Egy egyszerűbb, egységesített interfész meghatározása az alrendszer vagy komponens számára.
  2. Tervezzünk egy “burkoló” osztályt, amely kapszulázza az alrendszert.
  3. A homlokzat/burkolat megragadja a komponens komplexitását és együttműködéseit, és delegálja a megfelelő metódusokat.
  4. A kliens csak a homlokzatot használja (hozzá van kapcsolva).
  5. Megfontolandó, hogy további Facade-ek hozzáadott értéket jelentenek-e.

Összefüggő szabályok

  • A Facade egy új interfészt definiál, míg az Adapter egy régi interfészt használ.Ne feledje, hogy az Adapter két meglévő interfészt hoz működésbe, szemben egy teljesen új interfész definiálásával.
  • Míg a Flyweight azt mutatja meg, hogyan lehet sok kis objektumot létrehozni, a Facades azt mutatja meg, hogyan lehet egyetlen objektumot egy egész alrendszert reprezentálni.
  • A Mediator abban hasonlít a Facade-hoz, hogy absztrahálja a meglévő osztályok funkcionalitását. A Mediator absztrahálja/centralizálja a kollégák objektumai közötti önkényes kommunikációt. Rutinszerűen “értéket ad”,és a kolléga objektumok ismerik/referálnak rá. Ezzel szemben a Facade egy egyszerűbb interfészt definiál egy alrendszerhez, nem ad hozzá új funkcionalitást, és az alrendszer osztályai nem ismerik.
  • Abstract Factory a Facade alternatívájaként használható a platform-specifikus osztályok elrejtésére.
  • A Facade objektumok gyakran Singletonok, mert csak egy Facade objektumra van szükség.
  • Az adapter és a Facade is burkolat; de különböző típusú burkolatok. A Facade célja egy egyszerűbb interfész létrehozása, az Adapter célja pedig egy meglévő interfészhez való tervezés.Míg a Facade rutinszerűen több objektumot, az Adapter pedig egyetlen objektumot burkol; a Facade egyetlen összetett objektumot, az Adapter pedig több örökölt objektumot burkolhat.

Kérdés:

Válasz: Tehát az adapter és a homlokzatminta közötti különbség abban áll, hogy az adapter egy osztályt takar, a homlokzat pedig több osztályt is képviselhet?

Válasz: Az adapter egy osztályt takar, a homlokzat pedig több osztályt is? Nem! Ne feledje, az Adapter minta egy vagy több osztály interfészét egy interfésszé változtatja, amit az ügyfél elvár. Míg a legtöbb tankönyvi példában az adapter egy osztályt adaptál, előfordulhat, hogy több osztályt kell adaptálnia ahhoz, hogy az ügyfél által kódolt interfészt biztosítsa. Hasonlóképpen, a Facade egyszerűsített interfészt biztosíthat egy nagyon összetett interfésszel rendelkező egyetlen osztály számára. A kettő közötti különbség nem abban rejlik, hogy hány osztályt “csomagolnak”, hanem a szándékukban.

Támogassa ingyenes weboldalunkat és legyen Öné az e-book!

  • 22 tervezési minta és 8 alapelv mélyreható magyarázata
  • 406 jól strukturált, könnyen olvasható, szakzsargonmentes oldal
  • 228 világos és hasznos illusztráció és diagram
  • Egy archívum kódpéldákkal 4 nyelven
  • Minden eszköz támogatott: EPUB/MOBI/PDF formátumokban

Tudjon meg többet…

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.