Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilDenis Bláha
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.