1 / 18

Design Patterns

Design Patterns. Iterator & Mediator. Gruppe 8. Presentasjonsgruppe: Resten av gruppen: Marianne Ates Andrè Johansen Tom Vidar Lunde Hege-Kristin Johansen Marit Bøe Finden Herman Kolås Jonas Lillevold. Objekt-orientert design.

latif
Download Presentation

Design Patterns

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. Design Patterns Iterator & Mediator

  2. Gruppe 8 Presentasjonsgruppe: Resten av gruppen: Marianne Ates Andrè Johansen Tom Vidar Lunde Hege-Kristin Johansen Marit Bøe Finden Herman Kolås Jonas Lillevold

  3. Objekt-orientert design En samling elementer – klasser og objekter – som er tilrettelagt slik at de til sammen fungerer som en helhet

  4. Design Patterns Begrepet oppsto i 1994/95 i boka: ”Designpattern – Elements of Reusable Object Oriented Software” Av: Erich Gamma, Richard Helm, Ralph Johnson og John Vlissides.

  5. Design Patterns • Definisjon: • Designpatterns kan beskrives ved at de i en abstrakt formbeskriver et designproblem i en gitt sammenheng, samtbeskriver hvordan elementene – klassene og objektene – børorganiseres for å løse problemet.

  6. Fordeler med Designpatterns Bruk av Designpatterns bidrar til: • Bedre arkitektur • Bedre kommunikasjon mellom prosjektdeltakerne • Bedre forståelse av problemstillinger og hvordan de skal/bør løses • At systemer ikke bare blir bedre, men også produsert raskere • Å gi systemer lengre livsløp samt lavere totale livskostnader

  7. Patternkatalog Det finnes tre hovedtyper designpatterns. Katalogene her er organisert med base på hovedformålet: • Creation pattern – dvs pattern som brukes med formål å abstraktere hvordan objekter produseres / instantieres. • Structural patterns – dvs pattern med formål å bygge større objektkomposisjoner / - strukturer. • Behavior patterns – dvs patterns med formål å komponere funksjoner med basis i hvordan et antall objekter kommuniserer og funksjonerer. • VI skal ta for oss 2 typer av designpattern; iterator og mediator pattern som er katalogisert som behavior patterns

  8. Iterator Pattern • Definisjon: • Tilrettelegge en ensartet metode for å sekvensielt traversere et objekts elementer uten at den underliggende datastrukturen eksponeres.

  9. Client Iterator First() Next() IsDone() CurrentItem() ConcreateAggregate CreateIterator() ConcreateIterator UML Class Diagram: Iterator Pattern Aggregate CreateIterator() Return new ConcreateIterator(this);

  10. Iterator Pattern: UML class - diagram • The Client (Klienten):Ønsker å aksessere en liste • Klasser og/eller elementer som er med i mønsteret er: • The Aggregate (samling):Interfacet som oppretter et objekt som gir adgang til klienten (i.e. Iterator) • Iteratoren (abstrakt iterator):Definerer et Interface for å opprette et Iterator objekt. Interfacet brukes av klienten til å aksessere (gi tilgang) og traversere elementene I lista. • ConcreteAggregate (Collection, samling):Koden som implementerer Iterator. Oppretter et Interface for å returnere en instans av klassen ConcreteIterator. • ConcreteIteratorImplementerer Iterator Interfacet.

  11. Praktisk eks. 1: Legekontor

  12. Praktisk eks. 2: TV fjernkontroll

  13. Iterator Pattern Fordeler: • Klienten ser et enkelt interface fra Aggregate. • Det er forskjellige måter å traversere et Aggregate. • Klienten kan fremføre mer en èn traveresering på samme liste og samtidig. • Interfacet sørger for at Aggregatet er konsistent, uavhangig av hvilken struktur som implementasjonen bruker. Ulemper: • Dynamisk fordeling av Iterator ender ofte opp med “lekkasjer” fordi det er lett å glemme å slette dem. Relaterte Pattern: • Composite • Factory • Memento

  14. Code Example (modified from [Bono, 2001]) // Aggregatetemplate <class Type> class List {   friend class ListIter<Type> public:   //. . . };   // Iteratortemplate <class Type> class ListIter { public:   ListIter(const List<Type> &l);   const Type &curr() const;   Type &curr();   void next();   int done() const; private:   Node<Type> *curr; }; // Concrete Iterator - iterListIter<int> iter(list);   int n = 0;   int sum = 0;   while (!iter.done()) {     sum += iter.curr(); };// Implementation// constructortemplate <class Type> ListIter<Type>:: ListIter(const List<Type> &l) : curr(l.listp) { } // curr()template <class Type>  const<Type> & ListIter<Type>:: curr() const {   return curr->value; } // next()template <class Type> void ListIter<Type>:: next() {   curr = curr->next; } // done()template <class Type> int ListIter<Type>:: done() const {   return curr == NULL; } // Clientvoid main () { // Concrete Aggregate - listList<int> list = new List<int>(...);   ... cout << "Average = " << avg(list);   ... } float avg (const List<int> &list) { Eks. kode

  15. Mediator Pattern • Definisjon: • La et objekt være ansvarlig for å koordinere hvordan et antall andre objekter kommuniserer med hverandre og derigjennom kunne styre ulike typer av kommunikasjonsmønstre.

  16. Forandring på systemet rammer bare Mediator, andre objekter kan brukes som de er. Siden Mediator (mekler) og dens colleagues (kollegaer) bare er knyttet sammen ved hjelp av en løs kopling, kan begge bli variert og brukt om igjen uavhengig av hverandre. Siden Mediator benytter seg av ”en-til-mange” relasjoner blir systemet lettere å forstå. Siden alle hendelsene mellom colleagues (kollegaer) er integrert i Mediator, fører dette ofte til at Mediator-klassen blir veldig kompleks og dermed vanskelig å opprettholde. Fordeler - Ulemper

  17. Mediator ex. I

  18. Mediator ex. II

More Related