Homlokzat programtervezési minta

A Wikipédiából, a szabad enciklopédiából

A homlokzat programtervezési minta az objektumorientált programozásban egy gyakran használt programtervezési minta. Az elnevezés a építészetbeli homlokzat analógiáján alapul.

A homlokzat egy objektum, amely egy leegyszerűsített interfészt biztosít nagyobb kódrészhez, mint pl. egy osztálykönyvtár.

A homlokzat képes:

  • egy szoftverkönyvtár használatát megértését és tesztelését megkönnyíteni, habár a homlokzat kényelmes módszer általános feladatokra
  • egy könyvtárat olvashatóbbá tenni, ugyanazon okok miatt
  • csökkenteni a külső kód függőségeit a belső könyvtári munkáktól, habár a legtöbb kód használja a homlokzatot, amely nagyobb rugalmasságot biztosít a rendszer fejlesztésekor
  • becsomagolja a gyengén tervezett APIk gyűjteményét egy leegyszerűsített jól tervezett API-ba (feladatonként szükséges módon)

Használata[szerkesztés | forrásszöveg szerkesztése]

A Homlokzatot akkor használják, amikor valaki egy könnyebb vagy leegyszerűsített interfészt szeretne egy alatta lévő megvalósítási objektumhoz.[1] Máskor az adapter használható, ha a becsomagolónak figyelnie kell egy kitüntetett interfészre, és támogatnia kell a többalakú viselkedést. A díszítő lehetővé teszi, hogy hozzáadjunk, vagy módosítsuk egy interfész viselkedését futás időben.

Minta Leírás
Illesztő Egy interfészt egy másikba konvertál, azért, hogy az megfeleljen az ügyfél elvárásainak
Díszítő Dinamikusan felelősségeket ad hozzá az interfészhez becsomagolva az eredeti kódot
Homlokzat Leegyszerűsített interfészt nyújt

Struktúra[szerkesztés | forrásszöveg szerkesztése]

FacadeDesignPattern.png

Homlokzat (angolul facade)
A homlokzat osztály az 1-es, 2-es és 3-as csomagok egy absztrakcióját nyújtja, és elválasztja ezeket az alkalmazás többi részéből.
Ügyfelek (angolul clients)
Az objektumok a Homlokzat mintát használják az erőforrások a csomagokból való eléréséhez.

Példa[szerkesztés | forrásszöveg szerkesztése]

Absztrakt példa arra, hogy a kliens ("te") hogy tud használni egy homlokzat ("számítógép") segítségével egy bonyolult rendszert (belső számítógép részek, mint pl. a processzor v. a merevlemezek).

/* Bonyolult részek */
 
class CPU {
    public void freeze() { ... }
    public void jump(long position) { ... }
    public void execute() { ... }
}
 
class Memory {
    public void load(long position, byte[] data) { ... }
}
 
class HardDrive {
    public byte[] read(long lba, int size) { ... }
}
 
/* Homlokzat */
 
class Computer {
    private CPU processor;
    private Memory ram;
    private HardDrive hd;
 
    public Computer() {
        this.processor = new CPU();
        this.ram = new Memory();
        this.hd = new HardDrive();
    }
 
    public void start() {
        processor.freeze();
        ram.load(BOOT_ADDRESS, hd.read(BOOT_SECTOR, SECTOR_SIZE));
        processor.jump(BOOT_ADDRESS);
        processor.execute();
    }
}
 
/* Ügyfél */
 
class You {
    public static void main(String[] args) {
        Computer facade = new Computer();
    facade.start();
    }
}

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

  1. (2004.) „Head First Design Patterns” (paperback) 1, 243, 252, 258, 260. o, Kiadó: O'Reilly. Hozzáférés ideje: 2012. július 2.  

További információk[szerkesztés | forrásszöveg szerkesztése]

A(z) Sablon:Nyelv neve/Facade implementations in various languages Wikikönyvekben
további információk találhatók
Facade témában.

Sablon:Commons category

Fordítás[szerkesztés | forrásszöveg szerkesztése]

Ez a szócikk részben vagy egészben a Facade pattern című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.

Sablon:Design Patterns Patterns