A Java proxy mintája

1. Áttekintés

A Proxy minta lehetővé teszi egy olyan közvetítő létrehozását, amely interfészként működik egy másik erőforráshoz, miközben elrejti a komponens mögöttes bonyolultságát is.

2. Példa a proxy mintára

Vegyünk egy nehéz Java objektumot (például JDBC kapcsolatot vagy a SessionFactory), amely bizonyos kezdeti konfigurációt igényel.

Csak azt akarjuk, hogy az ilyen objektumokat igény szerint inicializálják, és amint azok megtörténnek, szeretnénk újra felhasználni őket az összes híváshoz:

Hozzunk létre egy egyszerű felületet és konfigurációt ehhez az objektumhoz:

nyilvános felület ExpensiveObject {void process (); }

És ennek az interfésznek a megvalósítása nagy kezdeti konfigurációval:

public class ExpensiveObjectImpl implementálja az ExpensiveObject {public ExpensiveObjectImpl () {heavyInitialConfiguration (); } @Orride public void process () {LOG.info ("feldolgozás befejeződött."); } private void heavyInitialConfiguration () {LOG.info ("A kezdeti konfiguráció betöltése ..."); }}

Most felhasználjuk a Proxy mintát, és igény szerint inicializáljuk az objektumunkat:

public class ExpensiveObjectProxy megvalósítja az ExpensiveObject {private static ExpensiveObject objektumot; @Orride public void process () {if (object == null) {object = new ExpensiveObjectImpl (); } object.process (); }}

Valahányszor ügyfelünk felhívja a folyamat() módszerrel, csak megnézik a feldolgozást, és a kezdeti konfiguráció mindig rejtve marad:

public static void main (String [] args) {ExpensiveObject object = new ExpensiveObjectProxy (); object.process (); object.process (); }

Ne feledje, hogy hívjuk a folyamat() módszer kétszer. A kulisszák mögött a beállítások rész csak egyszer fordul elő - az objektum első inicializálásakor.

Minden következő hívásnál ez a minta kihagyja a kezdeti konfigurációt, és csak a feldolgozás történik:

A kezdeti konfiguráció betöltése ... a feldolgozás befejeződött. feldolgozás befejeződött.

3. Mikor kell használni a proxyt

Megértése, hogyan a minta használata fontos.

Megértés mikor használata kritikus.

Beszéljünk arról, hogy mikor kell használni a Proxy mintát:

  • Amikor egy összetett vagy nehéz tárgy egyszerűsített változatát akarjuk. Ebben az esetben egy olyan csontváz objektummal ábrázolhatjuk, amely igény szerint betölti az eredeti objektumot, más néven lusta inicializálásnak. Ez Virtuális Proxy néven ismert
  • Amikor az eredeti objektum különböző címtérben van, és helyileg akarjuk képviselni. Létrehozhatunk egy proxyt, amely elvégzi az összes szükséges kazánelemet, például a kapcsolat létrehozását és fenntartását, kódolást, dekódolást stb., Miközben az ügyfél úgy ér el, mint a helyi címterében volt. Ezt hívják Távoli proxy-nak
  • Amikor hozzá akarunk adni egy biztonsági szintet az eredeti mögöttes objektumhoz, hogy az ügyfél hozzáférési jogain alapuló ellenőrzött hozzáférést biztosítsunk. Ezt hívják Protection Proxy-nak

4. Következtetés

Ebben a cikkben megnéztük a proxy tervezési mintázatát. Ez jó választás a következő esetekben:

  • Amikor egy objektum egyszerűsített változatát szeretnénk elérni, vagy biztonságosabb hozzáférést szeretnénk elérni az objektumhoz
  • Amikor egy távoli objektum helyi verzióját akarjuk

A példa teljes forráskódja elérhető a GitHub oldalon.