A homlokzati minta (vagy homlokzati minta) az objektumorientált programozásban általánosan használt szoftvertervezési minta. Az elnevezés az építészeti homlokzat analógiájára született.

A homlokzat olyan objektum, amely egyszerűsített interfészt biztosít egy nagyobb kódtesthez, például egy osztálykönyvtárhoz. Egy homlokzat lehet:

  • egy szoftverkönyvtárat könnyebben használhatóvá, érthetőbbé és tesztelhetőbbé tehet, mivel a homlokzat kényelmes módszereket tartalmaz a gyakori feladatokhoz;
  • ugyanezen okból olvashatóbbá teheti a könyvtárat;
  • csökkentheti a külső kód függőségét a könyvtár belső működésétől, mivel a legtöbb kód a homlokzatot használja, így nagyobb rugalmasságot tesz lehetővé a rendszer fejlesztésében;
  • egy rosszul megtervezett API-gyűjteményt egyetlen jól megtervezett API-val csomagolhat be.

A homlokzat tervezési mintát gyakran használják, ha egy rendszer nagyon összetett vagy nehezen érthető, mert a rendszer nagyszámú, egymástól függő osztállyal rendelkezik, vagy a forráskódja nem áll rendelkezésre. Ez a minta elrejti a nagyobb rendszer összetettségét, és egyszerűbb felületet biztosít az ügyfél számára. Jellemzően egyetlen burkoló osztályt tartalmaz, amely az ügyfél által igényelt tagok egy részét tartalmazza. Ezek a tagok a homlokzati kliens nevében érik el a rendszert, és elrejtik a megvalósítás részleteit.

Használat

A homlokzatot akkor használjuk, ha egy mögöttes objektumhoz egyszerűbb vagy egyszerűbb interfészre van szükség. Alternatívaként egy adapter akkor használható, ha a burkolónak tiszteletben kell tartania egy adott interfészt, és támogatnia kell a polimorf viselkedést. A dekorátor lehetővé teszi egy interfész viselkedésének hozzáadását vagy megváltoztatását futásidőben.

.

Pattern Intent
Adapter Konvertál egy interfészt egy másikba, hogy az megfeleljen az ügyfél elvárásainak
Decorator Dinamikusan hozzáad felelősséget az interfészhez az eredeti kód becsomagolásával
Facade Egy egyszerűsített interfészt biztosít

A facade mintát általában akkor használják, ha:

  • egy összetett rendszer eléréséhez egyszerű interfészre van szükség;
  • az alrendszer absztrakciói és megvalósításai szorosan összekapcsolódnak;
  • szükség van egy belépési pontra a többszintű szoftver minden szintjére; vagy
  • a rendszer nagyon összetett vagy nehezen érthető.

Szerkezet

Facade: A homlokzati osztály absztrahálja az 1., 2. és 3. csomagot az alkalmazás többi részétől.Ügyfelek: Az objektumok a homlokzati mintát használják a csomagok erőforrásainak elérésére.

Példa

Ez egy absztrakt példa arra, hogy egy ügyfél (“Ön”) hogyan lép kölcsönhatásba a homlokzattal (a “számítógép”) egy komplex rendszerrel (a számítógép belső részeivel, mint a CPU és a merevlemez).

/* Complex parts */class CPU { freeze() { /* code here */ } jump(position) { /* code here */ } execute() { /* code here */ }}class Memory { load(position, data) { /* code here */ }}class HardDrive { read(lba, size) { /* code here */ }}/* Facade */class ComputerFacade { constructor() { this.processor = new CPU(); this.ram = new Memory(); this.hd = new HardDrive(); } start() { this.processor.freeze(); this.ram.load(this.BOOT_ADDRESS, this.hd.read(this.BOOT_SECTOR, this.SECTOR_SIZE)); this.processor.jump(this.BOOT_ADDRESS); this.processor.execute(); }}/* Client */let computer = new ComputerFacade();computer.start();

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

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