1 / 45

2/2001

2/2001. Tietojärjestelmät ja Systeemisuunnittelu 010557001. Luennoitsija: Tapio Lammi e-mail: tapi@iki.fi. Suunnittelumallit (Design Patterns). Suunnittelumallit ovat valmiita ratkaisumalleja teityntyyppisiin usein toistuviin ongelmiin Tavoitteena:

tricia
Télécharger la présentation

2/2001

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. 2/2001 Tietojärjestelmät ja Systeemisuunnittelu 010557001 Luennoitsija: Tapio Lammi e-mail: tapi@iki.fi

  2. Suunnittelumallit (Design Patterns)

  3. Suunnittelumallit ovat valmiita ratkaisumalleja teityntyyppisiin usein toistuviin ongelmiin Tavoitteena: Tarjota luettelo valmiista ratkaisuista ongelmatilanteisiin Yhtenäistää suunnittelukäytäntöjä Tarjota yhtenäinen käsitteistö toteutustavoille Suunnittelumallit

  4. Suunnittelumallit • Suunnittelumallit voidaan jakaa kolmeen eri ryhmään: • Olion luontia kontrolloivat mallit • Olioiden rakennetta ja rajapintoja kontrolloivat mallit • Olioiden käyttäytymistä kontrolloivat mallit

  5. Abstract Factory - Toteutusmalli rajapinnalle jolla luodaan samaan ryhmään kuuluvia olioita, ilman että niiden varsinaisesta luokasta on tietoa. Builder - Mahdollistaa samalaisen luontiprosessin eri tyyppisille olioille Factory Method - tarjoaa rajapinnan olion luomiselle, mutta jättää aliluokkien tehtäväksi päättää lopullinen olion luokka Prototype - Mahdollistaa uuden olion luonnin kopioimalla sen ominaisuudet jo valmiista oliosta Singleton - Varmistaa että luokasta on olemassa ainoastaan yksi olio, ja tarjoaa sille sovelluksenlaajuisen luontirajapinnan Olion luontia kontrolloivat mallit

  6. Abstract Factory on käyttökelpoinen kun: Järjestelmän toteutuksessa käytettävät työkalut ja 3. Osapuolen tuotteet saattavat vaihtua Järjestelmän tulee olla konfiguroitavissa erilaisiin ympäristöihin Tietyntyyppiset olion on sidottava toimimaan yhdessä Toteutetaan työkalukirjastoa josta julkaistaan ainoastaan rajapinta Abstract Factory

  7. Abstract Factory - rakenne

  8. AbstractFactory - Määrittelee olioiden luontiin käytetyn rajapinnan ConcreteFactory - Toteuttaa olion luontiin liittyvät varsinaiset operaatiot AbstractProduct - Määrittelee olion rajapinnan ConcreteProduct - Toteuttaa olion operaatiot jotka on määritelty AbstractProduct rajapinnassa Client - Käyttää ainoastaan AbstractFactory- ja AbstractProduct rajapinnan operaatioita AbstractFactory - komponentit

  9. Abstract Factory - Esimerkki

  10. Builder mallia käytetään kun: järjestelmän täytyy mahdollistaa monimutkaisten olioiden luonnin ilman tietoa kaikista olion osista ja niiden luonnista Luontiprosessin täytyy mahdollista eri rajapinnat luotavalle oliolle Builder

  11. Builder - Rakenne

  12. Builder - Tarjoaa rajapinnan Product-olioiden luonnille ConcreteBuilder - Toteuttaa Builder-olion määrittämän rajapinnan olioiden luonnille ja tarjoaa rajapinnan luodun Product-olion käsittelylle Director - Luo oliot käyttäen Builder-rajapintaa Product - Luotava olio. Sisältää toteutettavien operaatioiden implementatiot ja luokkarakenteet Builder - Komponentit

  13. Builder - esimerkki Builders

  14. Kontrollin eteneminen Builder-mallissa

  15. Factory Method on käyttökelpoinen kun: Luokka ei voi ottaa kantaa luomaansa olioon Luokka haluaa aliluokkiensa määrittelvän luotavan olion (impelementaatio ja rajapinta erotettu toisistaan) Factory Method

  16. Factory Method - Rakenne

  17. Factory Method - Esimerkki

  18. Protype mallia voidaan käyttää kun: Luotavat oliot ladataan dynaamisesti ajon aikana Halutaan välttää monikerroksiset Factory-hierarkiat Kun luotavat oliot ovat tilallisia, ja halutaan automatisoida olion tilan asetus sen sijaan että se tehtäisiin joka kerta käsin. Prototype

  19. Prototype - Rakenne

  20. Prototype - Määrittää rajapinnan olion kopioinnille ConcretePrototype - Toteuttaa kopiointirajapinnan toiminnallisuuden Client - Luo uuden olion pyytämällä prototyyppiä kopioimaan itsensä Prototype - Komponentit

  21. Singleton mallia voidaan käyttää kun: Luokasta saa olla sovelluksessa käytössä vain ja ainoastaan yksi olio ja tälle oliolle halutaan sovelluksen laajuinen rajapinta Kun luokkaa jolla on vain yksi instanssi, pitää voida laajentaa periyttämällä, eikä luokan palveluita käyttävään koodiin haluta tehdä muutoksia Singleton

  22. Singleton - Rakenne

  23. Singleton: Tarjoaa metodin, jolla olio palauttaa ainoan sovellukessa olevan instanssin itsestään Huolehtii itse olion luonnista ja sen käytön kirjanpidosta Singleton - Komponentit

  24. Adapter - Kuorruttaa olion rajapinnan oliota käyttävien järjestelmän osien muotoon Bridge - Erottaa rajapinnan ja toteutuksen toisistaan niin, että molempia voidaan vaihtaa Composite - Mahdollistaa olioiden hierarkisen toteutuksen niin, että kutakin oliopuuta voidaan käsitellä yhtenä oliona Decorator - Mahdollistaa lisätoiminnallisuuksien lisäämisen olioon Façade - Tarjoaa yhtenäisen rajapinnan alijärjestelmän tarjoamille toiminnallisuuksille Flyweight - Mahdollistaa luotujen olioiden jakamisen järjestelmän osien kesken Proxy - Tarjoaa välirajapinnan jolla olion käyttöä voidaan kontrolloida Rakenteelliset Mallit

  25. Adapter-mallia käytetään kun: Olion tarjoama rajapinta ei vastaa tarvittua rajapintaa Rakennetaan uudelleenkäytettäviä komponentteja joissa käytetyt luokkahierarkiat saattavat vaihdella työkaluista riippuen Järjestelmässä käytetään useita aliluokkia, mutta on epäkäytännöllistä sovittaa niitä rajapintaan periyttämällä Adapter

  26. Adapter - Rakenne

  27. Target - Määrittelee sovelluskohtaisen rajapinnan jota Client käyttää Client - käyttää toiminnassaan Target-rajapintaa Adaptee - Toteuttaa rajapinnan joka on sovitettava Target rajapintaan Adapter - Sovittaa Adaptee rajapinnan Target rajapintaan Adapter - Komponentit

  28. Bridge-mallia käytetään kun: Halutaan välttää sidonta olion toteutuksen ja sen tarjoaman rajapinnan välillä Sekä rajapinnan että toteutuksen on oltava perittävissä olevia Toteutuksen vaihdon on oltava läpinäkyvä sitä käyttäville järjestelmän osille Halutaan jakaa olio useiden järjestelmänosien kesken ja toteuttaa esimerkiksi reference-counting kirjanpito niiden käytöstä Bridge

  29. Bridge - Rakenne

  30. Abstraction - Tarjoaa ulkoisen rajapinnan olion palveluun ja ylläpitää viitettä olion implementaatioon RefinedAbstraction - Laajentaa Abstraction rajapinnan toiminnallisuuksia Implementor - Määrittelee olion toteutuksen rajapinnan ConcreteImplementor - Toteuttaa olion tarjoaman toiminnallisuuden Bridge - Komponentit

  31. Composite mallia käytetään kun: Halutaan yksi access-piste joukolle samankaltaisia olioita Halutaan piilottaa palvelun käyttäjältä olioiden välinen hierarkinenr rakenne Composite

  32. Composite - Rakenne

  33. Component - Määrittelee rajapinnan hierarkian olioille, määrittelee oletustoteutuksen, sekä määrittelee rajapinnan lapsiolioiden käytölle Leaf - Toteuttaa olion, joka ei voi enää koostua muista Component olioista Composite - Määrittelee tominnallisuuden koosteolioille, säilyttää lapsikomponentit, sekä toteuttaa lasten käsittelyt Client - Käyttää olioiden palveluite Component rajapinnan kautta Composite - Komponentit

  34. Decorator mallia käytetään kun: Halutaan lisätä olion toiminnallisuutta ilman että muutetaan sen toteutusta Vähentämään periyttämisen tarvetta suurissa järjestelmissä Toteuttamaan ominaisuuksia joista voidaan myöhemmin haluta luopua Decorator

  35. Decorator - Rakenne

  36. Component - Määrittelee rajapinnan olioille joille voidaan lisätä ominaisuuksia ConcreteComponent - Olio, johon voidaan lisätä ominaisuuksia Decorator - Säilyttää viitteen Component-tason olioon ja toteuttaa sen rajapinnan ConcreteDecorator - Lisää toiminnallisuuksia Component - olioon Decorator - Komponentit

  37. Façade mallia käytetään kun: Halutaan yksinkertainen rajapinta monimutkaisiin operaatioihin Halutaan vähentää eri alijärjestelmiin kuuluvien olioiden riippuvuutta toisistaan Halutaan rakentaa järjestelmä kerroksittain, siten että kukin kerros tarjoaa tietyn rajapinnan ulospäin Facade

  38. Façade - Rakenne Alijärjestelmä

  39. Façade - Tuntee alijärjestelmän rakenteen ja ohjaa palvelukutsut kulloinkin oikealla oliolle Alijärjestelmän luokat: Toteuttavat alijärjestelmän toiminnallisuuden Ottavat palvelupyynnöt vastaan Façade oliolta Eivät ole riippuvaisia Façade oliosta Façade - Komponentit

  40. Flyweight mallia käytetään kun: Järjestelmä koostuu suuresta määrästä olioita Olioiden määrää pienentämällä voidaan pienentää resurssikulutusta Oliot ovat tilattomia Ohjelman toiminta ei ole riippuvainen olion identiteetistä FlyWeight

  41. FlyWeight - Rakenne

  42. Flyweight - Määrittelee rajapinnan jonka oliot tarjoavat muille järjestelmän osille ConcreteFlyweight - Toteuttaa Flyweight rajapinnan jaetuille olioille UnsharedConcreteFlyweight - Toteuttaa rajapinnan aliluokille joita ei voi jakaa Flyweight Factory - Luo Flyweight oliot ja pitää niistä kirjaa Client - Käyttää jaettuja Flyweight olioita ja hakee ne Flyweight Factoryltä FlyWeight - Komponentit

  43. Proxy-Mallia käytetään kun: Halutaan tarjota paikallinen rajapinta toisessa järjestelmässä olevaan olioon (remote Proxy) Kun halutaan luoda raskaat oliot vasta ajon aikana tarvittaessa (virtual Proxy) Kun halutaan kontrolloida olioiden palvelun käyttöä (protection Proxy) Kun halutaan toteuttaa kuorman jakoa tai vikasietoisuutta (smart Proxy) Proxy

  44. Proxy - Rakenne

  45. Proxy: Pitää yllä viitettä palvelun toiminnallisuuden toteuttavaan olioon Tarjoaa varsinaisen olion kanssa identtisen rajapinnan Kontrolloi varsinaisen olion palveluiden käyttöä Subject - Määrittelee rajapinnan jonka palvelu toteuttaaa RealSubject - Toteuttaa varsinaisen palvelun toiminnallisuuden Proxy - Komponentit

More Related