Tehdasmenetelmän Suunnittelukuvio Pythonissa

Johdanto

tässä artikkelissa sukelletaan Tehdasmenetelmän Suunnittelukuvioon, joka on toteutettu Pythonilla.

suunnittelumallit määrittelevät hyväksi havaitut ratkaisut erilaisiin ohjelmistokehityksen toistuviin ongelmiin. Ne eivät edusta varsinaista koodia, vaan tapoja, joilla voimme järjestää koodimme optimaalisiin tuloksiin.

rajallisten resurssien maailmassa suunnittelumallit auttavat meitä saavuttamaan eniten tuloksia vähiten käytetyillä resursseilla. On myös tärkeää huomata, että suunnittelumallit eivät koske kaikkia tilanteita, ja on ratkaisevan tärkeää arvioida käsillä olevaa ongelmaa, jotta voidaan valita paras lähestymistapa kyseiseen skenaarioon.

Suunnittelukuviot jaetaan muutamaan laajaan kategoriaan, joskin lähinnä Luomistyyppeihin, Rakennekuvioihin ja käyttäytymismalleihin.

tehtaan Menetelmäkuvio on Kreationaalinen Suunnittelukuvio.

Tehdasmenetelmän Suunnittelukaava

määritelmä

Tehdasmenetelmää käytetään oliopohjaisessa ohjelmoinnissa keinona tarjota tehdasrajapintoja olioiden luomiseen. Nämä rajapinnat määrittelevät yleisen rakenteen, mutta eivät alustaobjekteja. Alustus jätetään tarkempiin alaluokkiin.

kantaluokka / rajapinta sisältää kaiken standardin ja yleisen käyttäytymisen, joka voidaan jakaa eri tyyppisten alaluokkien kesken. Alaluokka puolestaan vastaa superluokkaan perustuvasta olion määrittelystä ja instantiaatiosta.

Motivaatio

Tehdasmenetelmän Suunnittelukuvion päämotivaatio on parantaa irtonaista kytkentää koodissa luomalla abstrakti luokka, jonka avulla voidaan luoda erityyppisiä objekteja, joilla on joitakin yhteisiä ominaisuuksia ja toimintoja.

tämä lisää koodin joustavuutta ja uudelleenkäyttöä, koska jaettua toiminnallisuutta ei kirjoiteta uudelleen, koska se on peritty samasta luokasta. Tämä suunnittelukuvio tunnetaan myös Virtuaalirakentajana.

Tehdasmenetelmän suunnittelukaavaa käytetään yleisesti kirjastoissa siten, että asiakas voi valita minkä alaluokan tai oliotyypin abstraktin luokan kautta luo.

Tehdasmenetelmä saa tiedon vaaditusta kohteesta, instantioi sen ja palauttaa määrätyn tyyppisen kohteen. Tämä antaa sovelluksellemme tai kirjastollemme yhden vuorovaikutuspisteen muiden ohjelmien tai koodinpalojen kanssa, mikä kapseloi objektin luontitoimintomme.

Tehdasmenetelmän toteutus

ohjelmamme tulee olemaan kirjasto, jota käytetään muodon kohteiden käsittelyyn luomisen ja muiden toimintojen kuten värin lisäämisen ja muodon pinta-alan laskemisen suhteen.

käyttäjien tulisi voida käyttää kirjastoamme uusien objektien luomiseen. Voimme aloittaa luomalla yksittäisiä yksittäisiä muotoja ja hyödyntämällä niitä sellaisenaan, mutta se tarkoittaisi, että paljon yhteistä logiikkaa on kirjoitettava uudelleen jokaista saatavilla olevaa muotoa varten.

ensimmäinen askel tämän toiston ratkaisemiseen olisi luoda emomuotoluokka, jolla on menetelmiä kuten calculate_area() ja calculate_perimeter(), sekä ominaisuuksia kuten ulottuvuuksia.

tietyn muotoiset objektit perivät sitten perusluokastamme. Luodaksemme muodon, meidän täytyy tunnistaa, millainen muoto tarvitaan ja luoda alaluokka sille.

aloitamme luomalla abstraktin luokan edustamaan yleistä muotoa:

tämä on perusluokka kaikille muodoillemme. Mennään eteenpäin ja luoda useita konkreettisia, tarkempia muotoja:

tähän mennessä olemme luoneet abstraktin luokan ja laajentaneet sen erilaisiin muotoihin sopivaksi, joka tulee olemaan saatavilla kirjastossamme. Jotta voidaan luoda eri muoto esineitä, asiakkaiden on tiedettävä nimet ja yksityiskohdat meidän muotoja ja erikseen suorittaa luominen.

tässä kohtaa tehtaan menetelmä astuu kuvaan.

Tehdasmenetelmän suunnittelukuvio auttaa meitä abstrahoimaan käytettävissä olevat muodot asiakkaalta, eli asiakkaan ei tarvitse tietää kaikkia käytettävissä olevia muotoja, vaan luoda vain mitä he tarvitsevat ajonaikana. Sen avulla voimme myös keskittää ja kapseloida objektin luomisen.

saavutetaanpa tämä luomalla ShapeFactory, jonka avulla luodaan asiakkaan panoksen pohjalta erityiset muotoluokat:

tämä on meidän rajapintamme luomiseen. Emme soita betoniluokkien rakentajille, vaan soitamme tehtaalle ja pyydämme sitä luomaan muodon.

meidän ShapeFactory toimii saamalla tiedon muodosta, kuten nimestä ja vaadituista mitoista. Tehdasmenetelmällämme create_shape() luodaan ja palautetaan valmiita haluttujen muotojen esineitä.

asiakkaan ei tarvitse tietää mitään kohteen luomisesta tai yksityiskohdista. Käyttämällä tehdasobjektia he voivat luoda objekteja vähäisellä tiedolla siitä, miten ne toimivat:

tämän koodin suorittaminen johtaa:

tai, voisimme rakentaa toisen muodon:

on syytä huomata, että sen lisäksi, että asiakkaan ei tarvitse tietää paljoakaan luomisprosessista – kun haluamme asentaa objektin, emme kutsu luokan rakentajaa. Pyydämme tehdasta tekemään tämän puolestamme create_shape() – funktiolle välittämämme tiedon perusteella.

plussat ja miinukset

plussat

yksi Tehdasmenetelmän suunnittelukaavan käytön suurimmista eduista on se, että koodimme kytkeytyy löyhästi toisiinsa, koska suurin osa koodimme komponenteista ei tiedä muita saman koodikappaleen komponentteja.

tämä johtaa koodiin, joka on helppo ymmärtää ja testata ja lisätä toiminnallisuutta tiettyihin komponentteihin vaikuttamatta tai rikkomatta koko ohjelmaa.

Tehdasmenetelmän suunnittelukaava auttaa myös ylläpitämään yhden vastuun periaatetta, jossa luokkia ja esineitä, jotka käsittelevät tiettyjä toimintoja, mikä johtaa parempaan koodiin.

Cons

useamman luokan luominen johtaa lopulta heikompaan luettavuuteen. Jos se yhdistetään abstraktiin tehtaaseen (tehtaiden tehtaaseen), koodista tulee pian monisanainen, mutta sitä voidaan ylläpitää.

johtopäätös

johtopäätöksenä Tehdasmenetelmän Suunnittelukaava mahdollistaa objektien luomisen määrittelemättä tarkkaa luokkaa, joka tarvitaan tietyn objektin luomiseen. Näin voimme irrottaa koodimme tuotannosta ja parantaa sen uudelleenkäytettävyyttä.

on tärkeää huomata, että kuten mikä tahansa muukin suunnittelukuvio, se soveltuu vain erityistilanteisiin eikä jokaiseen kehitysskenaarioon. Käsillä olevan tilanteen arviointi on ratkaisevan tärkeää ennen kuin päätetään toteuttaa Tehdasmenetelmän Suunnittelukuvio kuvion hyödyksi.

Vastaa

Sähköpostiosoitettasi ei julkaista.