Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava

Podobné prezentace


Prezentace na téma: "Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava"— Transkript prezentace:

1 Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava martin.kot.fei@vsb.cz http://linux456.vsb.cz/~kot119

2 Obsah Úvod Abstract Factory  Toolkit  EditorKit Factory Method  PopupFactory  KeyFactory  SocketImplFactory  DocumentBuilderFactory

3 Návrhové vzory Obecné řešení často se objevujících problémů Množina objektů a tříd, které jsou propojeny vazbami Dělí se podle funkce na:  Tvořící vzory  Strukturální vzory  Vzory chování

4 API jazyka JAVA Aplikační programátorské rozhraní (Application Program Interface) Soubor tříd, které jsou k dispozici programátorům Obsahuje implementace různých návrhových vzorů

5 Abstract Factory Patří mezi tvořící návrhové vzory Další názvy: Factory, Toolkit, Kit Poskytuje rozhraní pro tvoření rodin příbuzných objektů bez specifikace konkrétních tříd Nahrazuje přímé volání konstruktoru voláním tvořící metody továrního objektu

6 Diagram tříd – abstrakce vzoru Factory

7 Toolkit java.awt.Toolkit Nejdůležitější užití Factory v JAVA API Umožňuje platformově nezávislé aplikace s grafickým uživatelským rozhraním (GUI) Objekty GUI z balíku java.awt (ve vzoru Factory klienti) si tvoří automaticky „peer“ objekty (ve Factory produkty) s využitím továrny Toolkit Rozhraní pro „peer“ objekty jsou v balíku java.awt.peer Implementace „peer“ objektů jsou např. v balících sun.awt.windows a sun.awt.motif

8 Diagram tříd – propojení Toolkit se dvěma produkty

9 Příklady tvořících metod třídy Toolkit MetodaKlient createButton():ButtonPeerButton createCanvas():CanvasPeerCanvas createCheckbox():CheckboxPeerCheckbox createChoice():ChoicePeerChoice createComponent():LightweightPeerComponent createDialog():DialogPeerDialog createFileDialog():FileDialogPeerFileDialog createFrame():FramePeerFrame createLabel():LabelPeerLabel createList():ListPeerList

10 Diagram tříd – část hierarchie produktů

11 Jak to funguje? Systémově nezávislé objekty GUI přenechávají systémově závislé akce svým „peer“ objektům „Peer“ objekt je prostřednictvím továrny vytvořen, když je zavolána na objekt GUI první systémová akce a existuje po celou dobu existence objektu GUI Konkrétní podtřídu třídy Toolkit získá objekt GUI voláním statické metody getProperty() třídy System K vytvoření instance továrního objektu se využije třída Class

12 EditorKit javax.swing.text.EditorKit Klientem je JEditorPane Produkty jsou Document a ViewFactory ViewFactory je továrna pro tvoření objektů View odpovědných za zobrazení dokumentů Document slouží jako kontejnér na text pro textové prvky rozhraní SWING Konkrétní produktová třída HTMLFactory je vnitřní třídou HTMLEditorKit, StyledViewFactory je vnitřní StyledEditorKit a PlainEditorKit je v JEditorPane

13 Diagram tříd – EditorKit

14 Factory Method Patří mezi tvořící návrhové vzory Slouží k vytvoření jedné z několika možných tříd Třídy, které vrací, mívají stejné rozhraní a nadtřídu, ale každá úkoly provádí jiným způsobem Rozhodnutí o tom, kterou třídu vrátit, nechává tvořící třída na podtřídě, nebo o konkrétním produktu rozhoduje tvořící metoda na základě poskytnutých dat

15 Diagram tříd – abstrakce vzoru Factory Method

16 PopupFactory javax.swing.PopupFactory Slouží k získání instancí třídy Popup Objekty Popup slouží k zobrazení prvku GUI (instance Component ) nad všemi ostatními prvky Metoda getPopup() rozhoduje o konkrétní podtřídě třídy Popup na základě svých parametrů Všechny podtřídy Popup jsou vnitřními třídami Popup

17 Diagram tříd – PopupFactory

18 KeyFactory java.security.KeyFactory Slouží k převodu specifikací kryptografických klíčů (instance KeySpec) na objekty reprezentující klíče samotné (instance Key) a opačně Tvořící metody rozhodují o konkrétní třídě vraceného objektu na základě parametrů V distribuci JDK jsou jen implementace DSAPrivateKey a DSAPublicKey v balíku sun.security.provider

19 Diagram tříd – KeyFactory 1.část

20 Diagram tříd – KeyFactory 2.část

21 SocketImplFactory java.net.SocketImplFactory Třída Socket reprezentuje klientský konec síťového spojení. Skutečnou práci provádějí objekty tříd implementujících SocketImpl Socket si vytvoří svůj konkrétní SocketImpl pomocí továrny SocketImplFactory

22 Diagram tříd – SocketImplFactory

23 DocumentBuilderFactory Nachází se v balíku javax.xml.parsers Aplikace jejím prostřednictvím získávají parser, který vytváří stromy DOM objektů z XML dokumentů V distribuci JDK je jen jedna neabstraktní implementace od firmy Apache v balíku org.apache.crimson.jaxp

24 Diagram tříd – DocumentBuilderFactory


Stáhnout ppt "Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava"

Podobné prezentace


Reklamy Google