Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Tietojärjestelmät ja Systeemisuunnittelu

Samankaltaiset esitykset


Esitys aiheesta: "Tietojärjestelmät ja Systeemisuunnittelu"— Esityksen transkriptio:

1 Tietojärjestelmät ja Systeemisuunnittelu
2/2001 Tietojärjestelmät ja Systeemisuunnittelu Luennoitsija: Tapio Lammi 1

2 Suunnittelumallit (Design Patterns)

3 Suunnittelumallit 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

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 Olion luontia kontrolloivat mallit
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

6 Abstract Factory 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

7 Abstract Factory - rakenne

8 AbstractFactory - komponentit
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

9 Abstract Factory - Esimerkki

10 Builder 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

11 Builder - Rakenne

12 Builder - Komponentit 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

13 Builder - esimerkki Builders

14 Kontrollin eteneminen Builder-mallissa

15 Factory Method 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)

16 Factory Method - Rakenne

17 Factory Method - Esimerkki

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

19 Prototype - Rakenne

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

21 Singleton 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

22 Singleton - Rakenne

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

24 Rakenteelliset Mallit
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

25 Adapter 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ä

26 Adapter - Rakenne

27 Adapter - Komponentit 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

28 Bridge 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ä

29 Bridge - Rakenne

30 Bridge - Komponentit 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

31 Composite 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

32 Composite - Rakenne

33 Composite - Komponentit
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

34 Decorator 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

35 Decorator - Rakenne

36 Decorator - Komponentit
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

37 Facade 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

38 Façade - Rakenne Alijärjestelmä

39 Façade - Komponentit 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

40 FlyWeight 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ä

41 FlyWeight - Rakenne

42 FlyWeight - Komponentit
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ä

43 Proxy 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)

44 Proxy - Rakenne

45 Proxy - Komponentit 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


Lataa ppt "Tietojärjestelmät ja Systeemisuunnittelu"

Samankaltaiset esitykset


Iklan oleh Google