GeeksforGeeks (Suomi)

Tehdasmenetelmä on luova suunnittelumalli, joka liittyy objektien luomiseen. Tehdasmallissa luomme objektin altistamatta luontologiikkaa asiakkaalle ja asiakas käyttää samaa yhteistä käyttöliittymää uuden tyyppisen objektin luomiseen.
Ajatuksena on käyttää staattista jäsenfunktiota (staattinen tehdasmenetelmä), joka luo & palauttaa instanssit piilottaen luokan moduulien yksityiskohdat käyttäjältä.

Tehdasmalli on yksi objektin luomisen suunnittelun perusperiaatteista, jolloin asiakkaat voivat luoda objekteja kirjaston (selitetty alla) tavalla, jolla ei ole tiukkaa yhteyttä kirjaston luokkahierarkiaan.

Mitä tarkoitetaan, kun puhumme kirjastosta ja asiakkaista?
Kirjasto on jokin kolmas osapuoli, joka paljastaa joitain julkisia sovellusliittymiä ja asiakkaat soittavat kyseisiin julkisiin sovellusliittymiin tehtävänsä suorittamiseksi. Hyvin yksinkertainen esimerkki voi olla erilaisia Android-käyttöjärjestelmän tarjoamia näkymiä.

Miksi tehdasmalli?
Ymmärretään se esimerkillä:



Tulos:

I am two wheeler

Mitä ongelmia yllä olevassa suunnittelussa on?
Kuten yllä olevassa esimerkissä on todettu, asiakas luo joko TwoWheeler-objekteja tai FourWheeler perustuu joihinkin syötteisiin kohteen rakentamisen aikana.
Sanotaan, että kirjasto esittelee uuden luokan ThreeWheeler, johon sisältyy myös kolmipyöräiset ajoneuvot. Mitä tapahtuisi? Asiakas lopulta ketjuttaa uuden, jos se on ehdollisissa tikkaissa, luomaan ThreeWheeler-objekteja. Mikä puolestaan edellyttää asiakkaan kääntämistä uudelleen. Joten joka kerta, kun kirjastopuolella tehdään uusi muutos, asiakkaan on tehtävä sen lopussa joitain vastaavia muutoksia ja käännettävä koodi uudelleen. Kuulostaa huonolta? Tämä on erittäin huono käytäntö suunnittelussa.

Kuinka välttää ongelma?
Vastaus on, että luo staattinen (tai tehdas) menetelmä. Katsotaanpa alla oleva koodi.



Tulos:

I am three wheeler

Yllä olevassa esimerkissä olemme irrottaneet täysin objektinluontityypin valinnan asiakkaasta. Kirjasto on nyt vastuussa siitä, mikä objektityyppi luodaan syötteen perusteella. Asiakkaan on vain soitettava kirjaston tehtaan Luo-menetelmään ja välitettävä haluamasi tyyppi huolimatta esineiden luomisen todellisesta toteutuksesta.

Kiitos Rumplestiltskinille yllä olevan selityksen antamisesta.

Muita esimerkkejä tehdasmenetelmästä:

  1. Sanotaan, että Piirustus-järjestelmässä käyttäjän syötteestä riippuen voidaan piirtää erilaisia kuvia, kuten neliö, suorakulmio, ympyrä. Tässä voimme käyttää tehdasmenetelmää ilmentymien luomiseen käyttäjän syötteestä riippuen. Uuden tyyppisen muodon lisäämiseksi asiakkaan koodia ei tarvitse muuttaa.
  2. Toinen esimerkki: Voimme varata matkasivustolta junalipun sekä bussiliput ja lentoliput. Tässä tapauksessa käyttäjä voi antaa matkatyyppinsä ”bussi”, ”juna” tai ”lento”.
    Täällä meillä on abstrakti luokka AnyTravel, jolla on staattinen jäsenfunktio GetObject, joka riippuu käyttäjän matkatyypistä. create & paluuobjekti ’BusTravel’ tai ’TrainTravel’. BusTravelilla tai TrainTravelilla on yhteisiä toimintoja, kuten matkustajan nimi, alkuperä, määränpääparametrit.

Kiitos Abhijit Sahalle, joka antoi kaksi ensimmäistä esimerkkiä.

Write a Comment

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *