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.