Lecture overview -- Keyboard shortcut: 'u'  Previous page: Singleton (2) -- Keyboard shortcut: 'p'  Next page: Factory Method (2) -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Page 16 : 31
Forelæsningsnoter i Objekt-orienteret Programmering
Designmønstre
Factory Method (1)

Dette designmønster retter sig mod central kontrol af instantiering af klasser. I stedet for at at have mange konkrete instantieringer af 'en produktklasse' rundt omkring i et program overlades ansvaret for produkt instantiering til et fabrikationsobjekt, som foretager instantieringen for os. Dette fabrikationsmellemled skaber en betydelig fleksibilitet. F.eks. kan vi med ét slag sørge for, at en anden klasse end den oprindeligt tiltænkte, bliver instantieret

Designmønstret Factory Method understøtter skabelse af produktobjekter gennem et fabrikationsobjekt

Fabrikationsobjektet overlader det til en subklasse af bestemme typen af de fabrikerede objekter

  • Anvendes:

    • Når vi ønsker at uddelegere ansvaret for objektskabelse til et fabrikationsobjekt (en Creator)

    • Når fabrikationsobjektet ikke nødvendigvis har konkret viden om hvilken type af objekter det ønsker at skabe

      • Fabrikationsobjektet er abstrakt, og overlader det som sådan til subklasser at foretage den egentlige skabelse af produktobjekter

    • Når vi dynamisk på køretidspunktet ønsker at 'slå over i' skabelse af en anden slags produkter

Klassediagram for Factory Method designmønstret. Vi ser en abstrakt Creator (factory, altså fabrikations) klasse hvor operationen anOperation skaber et produktobjekt gennem den abstrakte metode factoryMethod.

Tænk på Creator klassen som en eller anden 'applikations klasse', der har behov for at skabe en produktklasse. Creatorklassen, som er abstrakt og dermed på et højt abstraktionsniveau, har ikke viden om, hvilket produktobjekt der skal skabes. Det overlades til en subklasse af Creator klassen at tage denne beslutning.

Forskellige subklasser af Creator klassen kan instantiere forskellige produkter, som måske alle har et bestemt Interface tilfælles. Man kan også forestilige sig, at instantieringen kan variere hen over tid på anden vis.

Bemærk at klasser og metoder, som er sat med kursiv skrift, er abstrakte. Den stiplede pil fra ConcreteCreator til ConcreteProduct fortæller, at creatoren skaber et produktobjekt