Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Strukturális tervezési minták
2
Strukturális tervezési minták
A strukturális tervezési minták lényege az, hogyan formálnak osztályok illetve objektumok nagyobb struktúrákat. A strukturális osztály minták az öröklődést használják ki. Például azokban a nyelvekben, ahol a többszörös öröklődés megengedett, két osztályból egyet mixelhetünk. Ez nagyon hasznos lehet, ha olyan library-kat használunk, amelyeket külön fejlesztettek és együtt kell működniük. Egy másik példa a Adapter minta. Az adapter az egyik interfészt megfelelteti egy másik (adaptált) interfésznek. Ezzel szemben a strukturált objektum minták objektumokból építkeznek, így érik el az elvárt struktúrát. Ez a módszer azt a rugalmasságot hordozza, hogy az objektumokat futásidőben is felépíthetjük. A Composite egy strukturális osztály minta. Azt írja le, hogyan építhetünk fel egy osztályhierarchiát primitív és kompozit objektumokból. A kompozitokat primitív és más kompozit objektumokból építhetjük fel. A Proxy mintában a proxy helyettesíthet illetve fenntartja a helyét egy másik objektumnak. A proxy megjeleníthet helyben egy távoli objektumot, illetve nagyméretű objektumot, amit igény szerint töltenek be. A proxy biztosíthatja a hozzáférést bizalmas objektumokhoz.
3
Strukturális tervezési minták
A Flyweight tervezési minta olyan struktúrát tárgyal, amely megosztott objektumokat használ. Az objektumokat két okból szokás megosztani: hatékonysági és konzisztencia okból. Azok az alkalmazások, amelyek sok objektumot használnak, különösen sok figyelmet kell fordítsanak az objektumok erőforrásigényére. Nyilvánvalóan csak azokat az objektumokat lehet megosztani, amelyeknek nincs a környezettől függő állapotuk. Ha ilyen állapot megadására szükséges, akkor azt a Flyweight objektumnak argumentumként kell átadni. Amíg a Flyweight sok kis objektum használatával foglalkozik, addig a Facade azt mutatja, hogy egyetlen objektum hogyan reprezentál egy egész alrendszert. A Bridge tervezési minta kettéválasztja az objektum absztrakcióját az implementációjától – így azt függetlenül módosíthatjuk. A Decorator leírja, hogyan adhatunk többlet funkcionalitást az objektumoknak dinamikusan. A Decorator egy nyílt végű struktúra, amely rekurzívan alkotja meg az összetett objektumot.
4
Adapter Cél Alkalmazási terület
Átkonvertálja az osztály interfészeit más interfésszé, ahogy azt a kliens várja. Lehetővé teszi olyan osztályok együttműködését, amelyek egyébként inkompatibilisek lennének. Alkalmazási terület Egy létező osztályt kívánunk használni, de az interfésze nem olyan, mint amire szükségünk van Létre akarunk hozni egy újrahasznosítható osztályt, ami együttműködik egy még nem létező osztállyal, illetve ilyan osztályokkal, amelyek interfésze inkompatibilis. (Csak az objektum adapter) néhány létező alosztályt kívánunk használni, de nem praktikus mindegyik alosztályból öröklődéssel új interfészt adaptálni. Az objektum adapter az ősosztály interfészeit adaptálhatja.
5
Adapter Class adapter
6
Adapter Object adapter
7
Bridge Cél Alkalmazási terület
Az absztrakció és az implementáció kettéválasztása, így azok egymástól függetlenül módosíthatók. Alkalmazási terület El akarjuk kerülni az absztrakció és az implementáció végleges összekapcsolását. Mind az absztrakció, mind az implementáció esetén legyen lehetőség alosztályokkal való funkcionális bővítésre. Az implementáció megváltoztatása ne legyen hatással a kliensre Meg akarjuk osztani az implementációt a kliensek között, de ezt elrejtjük a kliens elől.
8
Bridge
9
Composite Cél Alkalmazási terület
Fa struktúrák létrehozása rész-egész hierarchiák reprezentációjára. A Composite minta lehetővé teszi a kliensnek, hogy az egyedi objektumokat, illetve az kompozit objektumokat egyformán kezelje. Alkalmazási terület Rész-egész hierarchiájú objektumok ábrázolása a Kliens ne tegyen különbséget az egyedi illetve a kompozit objektumok között. A kliens a struktúra minden objektumát egyformán kezeli.
10
Composite
11
Composite
12
Decorator Cél Alkalmazási terület
Az objektumok funkcióinak dinamikus bővítése. A Decorator tervezési minta rugalmas alternatívát ad az öröklődéssel való funkcióbővítéssel szemben. Alkalmazási terület Az objektumok funkcióinak dinamikus bővítése egyenes módon (azaz a többi objektumra való kihatások nélkül) Visszavonható funkcióbővítések esetén Amikor az öröklődéssel való funkcióbővítés nem praktikus. Gyakran a bővítési lehetőségek nagy száma az alosztályok számának kombinatorikus robbanását idézi elő. Amikor az osztálydefiníció nem elérhető az örökléshez.
13
Decorator
14
Decorator
15
Decorator
16
Decorator A JAVA nyelv tele van (nem vizuális) Decorator példákkal
A FilterInputStream osztály egy Decorator ami becsomagol bármilyen input stream osztályt. Lényegében ez egy absztrakt osztály, ami nem végez semmilyen műveletet, csupán egy olyan rétege biztosít, ahol a megfelelő metódusok megjelennek. Ezeket a metódus hívásokat továbbija a szülő stream osztályoknak. Néhány érdekes FilterInputStream osztály: BufferedInputStream CheckedInputStream DataInputStream DigestInputStream InflaterInputStream PushbackInputStream
17
Façade Cél Alkalmazási Terület
Egységesített interfész(eke)t kínálni egy alrendszerben A Façade tervezési minta egy magas szintű interfészt kínál, amely az alrendszer használatát megkönnyíti. Alkalmazási Terület A façade egy egyszerű alapértelmezett nézetet kínál egy alrendszerről, amely a legtöbb kliensnek elegendő. A façade alkalmazásával az alrendszert a klienstől és egyéb alrendszerektől elkülöníthetjük, így az alrendszerek függetlenné, és hordozhatóbbá válnak. Réteges alrendszer struktúrát akarunk létrehozni. A façade segítségével minden alrendszer réteghez egy belépési pontot rendelhetünk.
18
Façade
19
Façade
20
Flyweight Cél Alkalmazási terület
Megosztás segítségével nagyszámú, ‘finomszemcséjű’ objektum hatékony támogatása. Alkalmazási terület Az alkalmazásunk nagyszámú objektumot kezel és a tárolási költség magas az objektumok előfordulási száma miatt és a legtöbb objektum állapota kívülről jövő (vagy azzá tehető) és az objektumok nagy csoportja kicserélhető viszonylag kevés megosztott objektummal, ha a kívülről jövő állapotokat eltávolítjuk és az alkalmazás nem függ az objektumok azonosításától. Mivel a flyweight objektumok megoszthatók lehetnek, ezért különböző objektumok is azonosnak vallhatják magukat.
21
Flyweight
22
Flyweight
23
Flyweight
24
Flyweight
25
Proxy Cél Alkalmazási terület
Egy objektumot helyettesítő vagy annak helyét fenntartó objektum létrehozása. Alkalmazási terület A proxy akkor alkalmazható, amikor egy objektumhoz rugalmasabb, sokoldalúbb referenciára van szükség A távoli proxy helyileg jeleníti meg a távoli memóriacímen lévő objektumot A virtuális proxy az erőforrás-igényes objektumokat igény szerint jtölti be A protection proxy az eredeti objektumhoz való hozzáférést szabályozza A smart reference az egyszerű pointert helyettesíti olyan esetekben, amikor az objektum elérésekor további műveletek szükségesek.
26
Proxy
27
Proxy
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.