Tehdasmenetelmän suunnittelumalli


Tarkoitus

  • Määritä käyttöliittymä objektin luomiseen, mutta anna alaluokkien päättää, mikä luokka esiintyy. Tehdasmenetelmä sallii luokan deferentoinnin alakategorioihin.
  • ”Virtuaalisen” konstruktorin määrittely.
  • new -operaattori pitää haitallista.

Ongelma

Kehyksen on standardoitava arkkitehtoninen malli useille sovelluksille, mutta sen on annettava yksittäisten sovellusten määritellä omat verkkotunnuksen objektinsa ja huolehtia niiden välitettävyydestä.

Keskustelu

Tehdasmenetelmänä on luoda objekteja, kun Template Method -toiminto täydentää algoritmia. Yliluokka määrittelee kaikki tavanomaiset ja yleiset toiminnot (käyttäen puhtaita virtuaalisia ”paikkamerkkejä” luomisvaiheissa) ja delegoi sitten luomisen yksityiskohdat asiakkaan toimittamiin alaluokkiin.

Tehdasmenetelmä tekee suunnittelusta mukautettavamman ja vain vähän monimutkaisempi. Muut suunnittelumallit vaativat uusia luokkia, kun taasFactory Method vaatii vain uuden toiminnon.

Ihmiset käyttävät usein Factory-menetelmää tavallisena tapana luoda objekteja; mutta sitä ei tarvita, jos: luokka, jonka esimerkki ei koskaan muutokset tai instantiointi tapahtuu toiminnassa, jonka aliluokat voivat helposti ohittaa (kuten alustamisoperaatio).

Tehdasmenetelmä on samanlainen kuin Abstract Factory, mutta ilman korostusperheitä.

Tehdasmenetelmät määritetään rutiininomaisesti arkkitehtuurikehyksessä, ja sitten kehyksen käyttäjä toteuttaa ne.

Rakenne

Tehdasmenetelmän toteutus, josta keskustellaan neljän joukossa (alla), pääosin päällekkäisiä abstraktin tehtaan. Tästä syystä tämän luvun esitys keskittyy lähestymistapaan, josta on tullut suosittu.

Yhä suositumpi tehtaan määritelmä menetelmä on: luokan static menetelmä, joka palauttaa kyseisen luokan objektin. Mutta toisin kuin konstruktori, sen palauttama varsinainen objekti voi olla alaluokan esiintymä. olemassa olevaa objektia voidaan käyttää uudelleen luodun uuden objektin sijaan. Toisin kuin konstruktori, tehdasmenetelmillä voi olla erilaisia ja kuvaavampia nimiä (esim. Color.make_RGB_color(float red, float green, float blue) ja Color.make_HSB_color(float hue, float saturation, float brightness)

Asiakas on erotettu kokonaan johdettujen luokkien toteutuksen yksityiskohdista. Polymorfinen luominen on nyt mahdollista.

Esimerkki

Tehdasmenetelmä määrittelee käyttöliittymän objektien luomiselle, mutta antaa aliluokkien päättää, mitkä luokat esikatsella. Ruiskupuristimet osoittavat Tämä kuvio. Muovilelujen valmistajat käsittelevät muovimuovijauhetta ja ruiskuttavat muovin halutun muotoisiin muotteihin. Lelu luokka (auto, toimintahahmo jne.) Määräytyy muotin avulla.

Tarkastusluettelo

  1. Jos sinulla on perinnöllisyyshierarkia, joka harjoittaa polymorfismia, harkitse polymorfisen luomisominaisuuden lisäämistä määrittelemällä static tehtaan menetelmä perusluokkaan.
  2. Suunnittele argumentit tehdasmenetelmälle. Mitkä ominaisuudet tai ominaisuudet ovat välttämättömiä ja riittäviä oikean johdetun luokan tunnistamiseksi instantisoimiseksi?
  3. Harkitse sellaisen sisäisen ”objektivaraston” suunnittelua, joka sallii objektien uudelleenkäytön sen sijaan, että luotaisiin tyhjästä.
  4. Harkitse kaikkien rakentajien tekeminen private tai protected.

nyrkkisäännöt

  • Abstraktit tehdasluokat toteutetaan usein tehdasmenetelmillä, mutta ne voidaan toteuttaa prototyypillä.
  • tehdasmenetelmiä kutsutaan yleensä mallimenetelmissä.
  • tehdasmenetelmä: luominen perimällä . Prototyyppi: luominen delegoinnin avulla.
  • Usein mallit alkavat tehdasmenetelmällä (vähemmän monimutkainen, mukautettavissa, alaluokat lisääntyvät) ja kehittyvät kohti AbstractFactory, Prototype tai Builder (joustavampi, monimutkaisempi), kun suunnittelija huomaa, missä enemmän joustavuutta tarvitaan.
  • Prototyyppi ei vaadi alaluokitusta, mutta se vaatii alustamisen. Tehdasmenetelmä vaatii aliluokituksen, mutta ei ”alustaa alustusta.”
  • Tehdasmenetelmän etu on että se voi palauttaa saman aineen useita kertoja tai palauttaa aliluokan kuin tämän tyyppisen objektin.
  • Jotkut tehdasmenetelmät suosittelevat, että kielen suunnittelussa (tai jos tämä ei onnistu, tyylinä) ) ehdottomasti kaikkien rakentajien tulisi olla yksityisiä tai suojattuja. Ei ole kukaan muu liiketoiminta, valmistaako luokka uuden objektin vai kierrättääkö se vanhan.
  • Operaattori new piti haitallisena. Objektin pyytämisessä ja luomisessa on eroa. new -operaattori luo aina objektin eikä kapseloi objektin luomista.Tehdasmenetelmä pakottaa kapseloinnin käyttöön ja sallii objektin pyytämisen ilman, että sitä voidaan liittää erottamattomasti luomiseen.

Tukea ilmaista verkkosivustoamme ja omistaa e-kirja!

  • 22 suunnittelumallia ja 8 periaatetta perusteellisesti selitetty
  • 406 hyvin jäsenneltyä, helposti luettavaa ja ammattikieltä sisältämätöntä sivua
  • 228 selkeitä ja hyödyllisiä piirroksia ja kaavioita
  • Arkisto, jossa on koodiesimerkkejä 4 kielellä
  • Kaikki tuetut laitteet: EPUB / MOBI / PDF-muodot

Lisätietoja …

Vastaa

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