Homlokzati tervezési minta Java-ban
1. Bemutatkozás
Ebben a gyors bemutatóban megnézzük az egyik szerkezeti tervezési minta: a Homlokzat.
Először áttekintést adunk a mintáról, felsoroljuk annak előnyeit és leírjuk, hogy milyen problémákat old meg.
Ezután a homlokzati mintát a Java egyik meglévő, gyakorlati problémájára alkalmazzuk.
2. Mi az a homlokzat?
Egyszerűen fogalmazva: a homlokzat összetett alrendszert foglal magában egy egyszerű interfész mögött. Elrejti a komplexitás nagy részét, és megkönnyíti az alrendszer használatát.
Továbbá, ha közvetlenül a komplex alrendszert kell használnunk, akkor is megtehetjük; nem vagyunk kénytelenek állandóan használni a homlokzatot.
Sokkal egyszerűbb felület mellett még egy előnye van ennek a tervezési mintának a használatával. Leválasztja az ügyfélmegvalósítást az összetett alrendszerről. Ennek köszönhetően változtatni tudunk a meglévő alrendszeren, és nem érintjük az ügyfelet.
Lássuk működés közben a homlokzatot.
3. Példa
Tegyük fel, hogy autót akarunk indítani. Az alábbi ábra a régi rendszert ábrázolja, amely lehetővé teszi számunkra, hogy:

Amint látod, meglehetősen összetett lehet, és némi erőfeszítést igényel a motor megfelelő beindításához:
airFlowController.takeAir () fuelInjector.on () fuelInjector.inject () starter.start () CoolController.setTemperatureUpperLimit (DEFAULT_COOLING_TEMP) CoolController.run () catalyticConverter.on ()
Hasonlóképpen a motor leállításához is elég sok lépés szükséges:
fuelInjector.off () catalyticConverter.off () CoolController.cool (MAX_ALLOWED_TEMP) CoolController.stop () airFlowController.off ()
A homlokzatra éppen itt van szükség. Két módszerrel elrejtjük az összetettséget: startEngine () és stopEngine ().
Lássuk, hogyan tudjuk megvalósítani:
nyilvános osztály CarEngineFacade {private static int DEFAULT_COOLING_TEMP = 90; privát statikus int MAX_ALLOWED_TEMP = 50; privát FuelInjector fuelInjector = új FuelInjector (); privát AirFlowController airFlowController = új AirFlowController (); privát Starter indító = new Starter (); privát CoolingController CoolController = új CoolingController (); privát CatalyticConverter catalyticConverter = új CatalyticConverter (); public void startEngine () {fuelInjector.on (); airFlowController.takeAir (); üzemanyag befecskendező.on (); fuelInjector.inject (); starter.start (); CoolController.setTemperatureUpperLimit (DEFAULT_COOLING_TEMP); CoolController.run (); catalyticConverter.on (); } public void stopEngine () {fuelInjector.off (); catalyticConverter.off (); CoolController.cool (MAX_ALLOWED_TEMP); CoolController.stop (); airFlowController.off (); }
Most, egy autó beindításához és leállításához 13 helyett csak 2 sor kódra van szükségünk:
homlokzat.startEngine (); // ... homlokzat.stopEngine ();
4. Hátrányok
A homlokzati minta nem kényszerít minket nem kívánt kompromisszumokra, mert csak további absztrakciós rétegeket ad hozzá.
Előfordul, hogy a mintát egyszerű esetekben túl lehet használni, ami redundáns megvalósításhoz vezet.
5. Következtetés
Ebben a cikkben elmagyaráztuk a homlokzat mintázatát, és bemutattuk, hogyan lehet azt egy meglévő rendszer tetején megvalósítani.
Ezeknek a példáknak a megvalósítása megtalálható a GitHub oldalon.