Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.

Liknende presentasjoner


Presentasjon om: "Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton."— Utskrift av presentasjonen:

1 Singleton & Adapter Pattern Gruppe 3

2 Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton flytter ansvaret for at det kun blir opprettet et objekt av en klasse til klassen selv

3 Fordeler Kontrollert tilgang til eneinstansen av klassen Redusert navnerom (man forurenser ikke det globale navnerommet med objekter som lagrer eneinstanser) Tillater tilpassning av operasjoner og representasjon (for eksempel ved subclassing av klassen) Enkelt å forandre klassen til å håndtere flere instanser av klassen Bedre fleksibilitet enn klassefunksjoner (tillater polymorfi og avhenger ikke av språkstøtte)

4 Implementasjon Forsikre en unik instans class Singleton { public: static Singleton* Instance(); protected: Singleton(); private: static Singleton* _instance; }; Man kaller deretter metoden Instance() for å få instansen av objektet. Denne metoden oppretter objektet (legg merke til at konstruktøren er protected og kun tilgjenglig fra objektet selv) og lagrer den i _instance. Dersom _instance er satt, vil denne returneres istedenfor at et nytt objekt opprettes

5 Eksempler En windowmanager (for eksempel explorer.exe under windows) Et verdensobjekt i et spill (for eksmpel brettet du hopper rundt på i quake) Selve bilen i et styresystem for en bil Kommunikasjonen ut fra et program (kan f.eks. utvides på et senere tidspunkt).

6 Relatert til Abstract factory Builder Prototype

7 Adapter Pattern Konverterer grensesnittet mot en klasse til det en annen klasse forventer Opererer som en ”proxy” mellom to grensesnitt Kan gjøre ulike typer tilpassninger i forhold til hva de ulike grensesnittene forventer Muliggjør interoperabilitet mellom moduler som ellers ikke ville kunne passe sammen To hovedtyper: class adapter og object adapter –Class adapter binder seg til en gitt klasse (og vil ikke kunne brukes overfor subklasser) –Object adapter binder seg til en gitt objekttype (og kan f.eks. brukes transparent overfor alle subklasser)

8 Fordeler Mulighet for å gjøre forholdsvis store tilpassninger og transformasjoner Mulighet for dymamisk tilpassning etter hva behovet tilsier Kan bruke to-veis adaptere for å tilby transparente tjenester

9 Implementasjon Klassen definerer et sett med metoder i henhold til det interfacet som forventes. Disse metodene transformerer så forespørselen til et format som passer for klassen som skal brukes Den samme transformasjonen gjøres evnt. for resultatet tilbake fra implementasjonsklassen

10 Eksempler Applikasjonsspesifikt –Et grafikkprogram ønsker f.eks. å laste inn PNG-bilder Adapterklassen tar i mot forespørselen på ”vanlig” måte fra grafikkprogrammet Transformerer forespørselen til et format som libpng forstår Får rådata tilbake fra libpng Sender dataene tilbake til grafikkprogrammet som rådata

11 Relatert til Bridge - ment til å separere implementasjon og grensesnitt, slik at de kan byttes uten større problemer, mens Adapter er tiltenkt å forandre grensesnittet til et allerede eksisterende objekt. Decorator - utvider et eksisterende objekt uten å forandre grensesnittet. Decorator er mer transparent overfor applikasjonen enn det en Adapter er. Proxy - definerer en alterantiv- eller surrogatklasse for et annet objekt, men forandrer ikke grensesnittet

12 Referanser “Design Patterns – Elements of Reusable Object-Oirented Software” – Gamma, Helm, Jonson & Vlissides http://members.tripod.com/rwald/java/articl es/Singleton_in_Java.htmlhttp://members.tripod.com/rwald/java/articl es/Singleton_in_Java.html


Laste ned ppt "Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton."

Liknende presentasjoner


Annonser fra Google