Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałJózef Bednarski Został zmieniony 9 lat temu
1
Zakres Wzorce projektowe (http://wazniak.mimuw.edu.pl/index.php?title=Zaawansowane_projektowanie_obiektowe) -Adapter (str. 25-28, wykład wzorce projektowe część 1) - Composite (str. 29-32, wykład wzorce projektowe część 1) - Flyweight (str. 9-12, wykład wzorce projektowe część 3)
2
2 Wzorce projektowe Umożliwienie współpracy obiektów o niezgodnych typach Tłumaczenie protokołów obiektowych
3
3 Adapter: struktura
4
4 Adapter: uczestnicy Target – definiuje interfejs specyficzny dla klienta Client – współpracuje z obiektami typu Target Adaptee – posiada interfejs wymagający adaptacji Adapter – adaptuje interfejs Adaptee do interfejsu Target
5
5 Adapter: konsekwencje Duża elastyczność – pojedynczy Adapter może współpracować z wieloma obiektami Adaptee naraz – Adapter może dodawać funkcjonalność do Adaptee Utrudnione pokrywanie metod Adaptera – konieczne utworzenie podklas obiektu Adaptee i bezpośrednie odwołania do nich Kompozycja i dziedziczenie jako mechanizmy adaptacji
6
6 Adapter: przykład //We have an old outlet that only accepts two-pronged plugs public interface UngroundedOutlet { public void TwoProngPlugin(); public void TwoProngUnplug(); } //And our new plug has three prongs public class GroundedPlug { public void ThreeProngPlugin(); public void ThreeProngUnplug(); }
7
7 public class GroundedAdapter implements UngroundedOutlet { GroundedPlug plug; public GroundedAdapter(GroundedPlug plug) { this.plug = plug; } public void TwoProngPlugIn() { plug.ThreeProngPlugin(); } public void TwoProngUnplug() { plug.ThreeProngUnplug(); }
8
8 Adapter: przykład (3) public class testPlug { public static void main(String[] args) { //create the three-prong plug Plug groundedPlug = new GroundedPlug(); //create the adapter UngroundedOutlet adapter = new GroundedAdapter(groundedPlug); //plug in the adapter to the outlet adapter.TwoProngPlugIn(); }
9
9 Composite: Cel Organizowanie obiektów w struktury drzewiaste reprezentujące relacje typu całość-część Jednolita obsługa pojednczych obiektów i złożonych struktur
10
10 Composite: struktura
11
11 Composite: Uczestnicy Component – deklaruje wspólny interfejs dla obiektów znajdujących się strukturze – implementuje wspólną funkcjonalność wszystkich obiektów Leaf – reprezentuje węzeł bez potomków Composite – reprezentuje węzeł z potomkami – przechowuje referencje do potomków – deleguje otrzymane polecenia do potomków
12
12 Composite: konsekwencje Elastyczna definicja struktur drzewiastych Proste dodawanie nowych komponentów Proste i spójne zarządzanie strukturą o dowolnej liczbie elementów
13
13 Flyweight: cel Współdzielenie obiektów w celu zwiększenia wydajności Wydzielenie z obiektu stanu wewnętrznego (współdzielonego) i zewnętrznego (specyficznego)
14
14 Flyweight: struktura
15
http://www.javaworld.com/javaworl d/jw-07-2003/jw-0725- designpatterns.html 15 Flyweight: struktura
16
Ciekawy przykład (http://www.javacamp.org/designP attern/flyweight.html ) 16 Flyweight: struktura
17
17 Flyweight: uczestnicy Flyweight – podlega współdzieleniu między klientów – definiuje interfejs do przyjmowania i odtwarzania stanu zewnętrznego obiektu Concrete Flyweight – przechowuje stan wewnętrzny (współdzielony) – jest niezależny od kontekstu (z wyjątkiem stanu zewnętrznego) Flyweight Factory – tworzy i przechowuje obiekty Flyweight Client – otrzymuje obiekty Flyweight za pośrednictwem Flyweight Factory
18
18 Flyweight: konsekwencje Zmniejszenie wymagań pamięciowych programu – zmniejszenie ogólnej liczby obiektów – zmniejszenie rozmiaru stanu obiektów – stan zewnętrzny może być przechowywany lub wyliczany Wzrost złożoności obliczeniowej – dodatkowy nakład na zarządzanie stanem zewnętrznym
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.