GeeksforGeeks

Factory Method on Creational Design Pattern, joka sallii käyttöliittymän tai luokan luoda objektin, mutta antaa alaluokkien päättää minkä luokan tai objektin instantioida. Tehdasmenetelmällä meillä on parhaat tavat luoda objekti. Tässä objektit luodaan paljastamatta logiikkaa asiakkaalle ja uuden oliotyypin luomiseen asiakas käyttää samaa yhteistä rajapintaa.

ongelmat, joita kohtaamme ilman Tehdasmenetelmää:

Kuvittele, että sinulla on oma startup, joka tarjoaa kimppakyytejä eri puolilla maata. Sovelluksen alkuperäinen versio tarjoaa vain kaksipyöräisen kimppakyydin, mutta ajan myötä sovelluksestasi tulee suosittu ja nyt haluat lisätä myös kolmi-ja nelipyöräisen kimppakyydin.
It ’ s a piece of great news! mutta entä Oman startupin ohjelmistokehittäjät. Heidän on muutettava koko koodi, koska nyt suurin osa koodista on yhdistetty kaksipyöräiseen luokkaan ja kehittäjien on tehtävä muutoksia koko koodiin.
kun kaikki nämä muutokset on tehty, joko Kehittäjät päättyvät sotkuiseen koodiin tai erokirjeeseen.

factory-pattern-python

Localizer app

Diagramminen esitys ongelmista ilman Tehdasmenetelmää

ymmärretään käsite vielä yhdellä esimerkillä, joka liittyy eri kielten käännöksiin ja lokalisointiin.
Oletetaan, että olemme luoneet sovelluksen, jonka päätarkoitus on kääntää yksi kieli toiselle ja tällä hetkellä sovelluksemme toimii vain 10 kielellä. Nyt meidän sovellus on tullut laajalti suosittu ihmisten keskuudessa, mutta kysyntä on kasvanut yhtäkkiä sisällyttää 5 enemmän kieliä.
It ’ s a piece of great news! vain omistajalle, ei kehittäjille. Heidän on muutettava koko koodi, koska nyt suurin osa koodista on yhdistetty vain olemassa oleviin kieliin, ja siksi kehittäjien on tehtävä muutoksia koko koodiin, joka on todella vaikea tehtävä.

katsotaanpa koodia sille ongelmalle, jonka voimme kohdata ilman tehdasmenetelmää.

Huom.: Seuraava koodi kirjoitetaan ilman Tehdasmenetelmää.

class FrenchLocalizer:
def __init__(self):
self.translations = {"car": "voiture", "bike": "bicyclette",
"cycle":"cyclette"}
def localize(self, message):
return self.translations.get(msg, msg)
class SpanishLocalizer:
def __init__(self):
self.translations = {"car": "coche", "bike": "bicicleta",
"cycle":"ciclo"}
def localize(self, msg):
return self.translations.get(msg, msg)
class EnglishLocalizer:
def localize(self, msg):
return msg
if __name__ == "__main__":
f = FrenchLocalizer()
e = EnglishLocalizer()
s = SpanishLocalizer()
message =
for msg in message:
print(f.localize(msg))
print(e.localize(msg))
print(s.localize(msg))



ratkaisu Tehdasmenetelmällä:

sen ratkaisu on korvata suoraviivaiset esinerakennuskutsut erikoisen tehdasmenetelmän kutsuilla. Itse asiassa ei ole mitään eroa objektin luomiseen, mutta niitä kutsutaan sisällä tehtaan menetelmällä.

esimerkiksi: Kaksi_wheeler -, Kolme_wheeler-ja Neljä_wheeler-luokkaamme ottavat käyttöön kimppakyytirajapinnan, joka julistaa menetelmän nimeltä ride. Jokainen luokka toteuttaa tämän menetelmän yksilöllisesti.

python-tehdas-patteriliuos

ratkaisu_faktori_diagram

nyt selvitetään tehdasmenetelmä esimerkin avulla:

class FrenchLocalizer:
def __init__(self):
self.translations = {"car": "voiture", "bike": "bicyclette",
"cycle":"cyclette"}
def localize(self, message):
return self.translations.get(msg, msg)
class SpanishLocalizer:
def __init__(self):
self.translations = {"car": "coche", "bike": "bicicleta",
"cycle":"ciclo"}
def localize(self, msg):
return self.translations.get(msg, msg)
class EnglishLocalizer:
def localize(self, msg):
return msg
def Factory(language ="English"):
localizers = {
"French": FrenchLocalizer,
"English": EnglishLocalizer,
"Spanish": SpanishLocalizer,
}
return localizers()
if __name__ == "__main__":
f = Factory("French")
e = Factory("English")
s = Factory("Spanish")
message =
for msg in message:
print(f.localize(msg))
print(e.localize(msg))
print(s.localize(msg))



luokkakaavio Tehdastapaan:

katsotaan luokkakaaviota ottaen huomioon esimerkin kyydin jakamisesta.

 tehdaskuvioluokka

Factory_pattern_class_diagrma

Tehdasmenetelmän käytön edut:

  1. voimme helposti lisätä uudentyyppisiä tuotteita häiritsemättä olemassa olevaa asiakaskoodia.
  2. tuotteiden ja luojaluokkien ja-esineiden välillä pyritään yleensä välttämään tiukkaa kytkentää.

Tehdasmenetelmän käytön haitat:

  1. luoda particluar konkreettinen tuote objekti, asiakas voi joutua alaluokan luoja Luokka.
  2. päädytään valtavaan määrään pieniä tiedostoja eli tiedostojen sotkemiseen.
  3. soveltaminen :

    1. Grafiikkajärjestelmässä se voi käyttäjän syötöstä riippuen piirtää erilaisia muotoja, kuten suorakulmion, neliön,ympyrän jne. Mutta helppous sekä kehittäjien sekä asiakkaan, Voimme käyttää tehtaan menetelmää luoda esimerkiksi riippuen käyttäjän syötteestä. Sitten meidän ei tarvitse muuttaa asiakaskoodia uuden muodon lisäämiseksi.
    2. hotellin varaussivustolla voi varata paikan 1 huoneelle, 2 huoneelle, 3 huoneelle jne. Tähän käyttäjä voi syöttää haluamansa huoneiden määrän. Tehdasmenetelmällä voimme luoda tehdasluokan minkä tahansa huoneen, joka auttaa meitä luomaan instanssin käyttäjän syötteen mukaan. Jälleen meidän ei tarvitse muuttaa asiakkaan koodia lisäämällä uusi laitos.

    Lue lisää: Tehdaskuvio C++

artiklan tagit:

Vastaa

Sähköpostiosoitettasi ei julkaista.

Previous post Selegiliini Depotlaastari (Emsam) masennustilaan
Next post 6 Signs your Air Conditioner ’ s Compressor Is Bad