1 / 18

Zakres

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).

Download Presentation

Zakres

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Wzorce projektowe • Umożliwienie współpracy obiektów o niezgodnych typach • Tłumaczenie protokołów obiektowych

  3. Adapter: struktura

  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. 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. 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. 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. 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 = newGroundedAdapter(groundedPlug); //plug in the adapter to the outlet adapter.TwoProngPlugIn(); } }

  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. Composite: struktura

  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. Composite: konsekwencje • Elastyczna definicja struktur drzewiastych • Proste dodawanie nowych komponentów • Proste i spójne zarządzanie strukturą o dowolnej liczbie elementów

  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. Flyweight: struktura

  15. Flyweight: struktura http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-designpatterns.html

  16. Flyweight: struktura Ciekawy przykład (http://www.javacamp.org/designPattern/flyweight.html )

  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. 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

More Related