GeeksforGeeks (Dansk)

Fabriksmetoden er et skabelsesmønster, dvs. relateret til oprettelse af objekt. I fabriksmønster opretter vi objekt uden at udsætte oprettelseslogikken for klienten, og klienten bruger den samme fælles grænseflade til at oprette ny type objekt.
Ideen er at bruge en statisk medlemsfunktion (statisk fabriksmetode), der opretter & returnerer forekomster, skjuler detaljerne i klassemodulerne for brugeren.

Et fabriksmønster er et af de grundlæggende designprincipper for at oprette et objekt, der giver klienter mulighed for at oprette objekter i et bibliotek (forklaret nedenfor) på en sådan måde, at det ikke har en tæt sammenkobling med klassens hierarki i biblioteket.

Hvad menes der, når vi taler om bibliotek og klienter?
Et bibliotek er noget, der leveres af en tredjepart, der udsætter nogle offentlige API’er, og klienter foretager opkald til disse offentlige API’er for at fuldføre sin opgave. Et meget simpelt eksempel kan være forskellige slags visninger leveret af Android OS.

Hvorfor fabriksmønster?
Lad os forstå det med et eksempel:



Output:

I am two wheeler

Hvad er problemerne med ovenstående design?
Som du skal have observeret i ovenstående eksempel opretter klienten objekter fra enten TwoWheeler eller FourWheeler baseret på noget input under konstruktionen af dets objekt.
Sig, biblioteket introducerer en ny klasse ThreeWheeler til også at indarbejde trehjulede køretøjer. Hvad ville der ske? Kunden ender med at kæde et nyt andet, hvis det er i den betingede stige for at skabe objekter fra ThreeWheeler. Hvilket igen vil kræve, at klienten kompileres igen. Så hver gang en ny ændring foretages på biblioteksiden, skal klienten foretage nogle tilsvarende ændringer i slutningen og kompilere koden igen. Det lyder dårligt? Dette er en meget dårlig praksis med design.

Hvordan undgår man problemet?
Svaret er at oprette en statisk (eller fabriks) metode. Lad os se nedenstående kode.



Output:

I am three wheeler

I ovenstående eksempel har vi helt afkoblet markeringen af typen til oprettelse af objekt fra klienten. Biblioteket er nu ansvarlig for at beslutte, hvilken objekttype der skal oprettes på baggrund af et input. Klienten skal bare ringe til biblioteksfabrikken Oprette metode og videregive den type, den ønsker, uden at bekymre sig om den faktiske implementering af oprettelsen af objekter.

Tak til Rumplestiltskin for at give ovenstående forklaring.

Andre eksempler på fabriksmetode:

  1. Sig, i et ‘tegning’-system, afhængigt af brugerens input, kan forskellige billeder som firkant, rektangel, cirkel tegnes. Her kan vi bruge fabriksmetoden til at oprette forekomster afhængigt af brugerens input. For at tilføje en ny form, er det ikke nødvendigt at ændre klientens kode.
  2. Et andet eksempel: På rejsesiden kan vi bestille togbillet samt busbilletter og flybillet. I dette tilfælde kan brugeren angive sin rejsetype som ‘bus’, ‘tog’ eller ‘flyvning’.
    Her har vi en abstrakt klasse ‘AnyTravel’ med en statisk medlemsfunktion ‘GetObject’, som afhængigt af brugerens rejsetype, vil Opret & returneringsobjekt for ‘BusTravel’ eller ‘TrainTravel’. ‘BusTravel’ eller ‘TrainTravel’ har almindelige funktioner som passagernavn, oprindelse, destinationsparametre.

Tak til Abhijit Saha, der giver de første 2 eksempler.

Write a Comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *