Factory Method Design Pattern In Python

Introduksjon

i denne artikkelen vil vi dykke inn I Factory Method Design Pattern, implementert I Python.

Designmønstre definerer velprøvde løsninger på ulike tilbakevendende problemer i programvareutvikling. De representerer ikke selve koden, men heller måter som vi kan organisere vår kode for optimale resultater.

I en verden med begrensede ressurser hjelper Designmønstre oss med å oppnå flest resultater med minst mulig brukte ressurser. Det er også viktig å merke Seg At Designmønstre ikke gjelder for alle situasjoner, og det er avgjørende å vurdere problemet ved hånden for å velge den beste tilnærmingen for det aktuelle scenariet.

Designmønstre er delt inn i noen få brede kategorier, men hovedsakelig I Kreative Mønstre, Strukturelle Mønstre og Atferdsmønstre.

Fabrikkmetodemønsteret er Et Kreativt Designmønster.

Fabrikkmetodens Designmønster

Definisjon

Fabrikkmetoden brukes i objektorientert programmering som et middel til å gi fabrikkgrensesnitt for å lage objekter. Disse grensesnittene definerer den generiske strukturen, men initialiserer ikke objekter. Initialiseringen er overlatt til mer spesifikke underklasser.

foreldreklassen/grensesnittet inneholder all standard og generisk oppførsel som kan deles på tvers av underklasser av forskjellige typer. Underklassen er igjen ansvarlig for definisjonen og instantiasjonen av objektet basert på superklassen.

Motivasjon

hovedmotivasjonen bak Fabrikkmetodedesignmønsteret er å forbedre løs kobling i kode gjennom opprettelsen av en abstrakt klasse som skal brukes til å lage forskjellige typer objekter som deler noen felles attributter og funksjonalitet.

dette resulterer i økt fleksibilitet og gjenbruk av kode fordi den delte funksjonaliteten ikke vil bli omskrevet etter å ha blitt arvet fra samme klasse. Dette designmønsteret er også kjent som En Virtuell Konstruktør.

Fabrikkmetodedesignmønsteret brukes ofte i biblioteker ved å la klienter velge hvilken underklasse eller type objekt som skal opprettes gjennom en abstrakt klasse.

En Fabrikkmetode vil motta informasjon om et nødvendig objekt, starte det og returnere objektet av den angitte typen. Dette gir vår applikasjon eller biblioteket et enkelt punkt av interaksjon med andre programmer eller deler av koden, og dermed innkapsler vår objekt skapelse funksjonalitet.

Fabrikkmetodeimplementering

vårt program skal være et bibliotek som brukes til å håndtere formobjekter når det gjelder opprettelse og andre operasjoner som å legge til farge og beregne formens område.

Brukere skal kunne bruke biblioteket vårt til å opprette nye objekter. Vi kan starte med å lage enkelt individuelle former og availing dem som er, men det ville bety at mye felles logikk må omskrives for hver form vi har tilgjengelig.

det første trinnet for å løse denne repetisjonen ville være å lage en overordnet formklasse som har metoder som calculate_area() og calculate_perimeter(), og egenskaper som dimensjoner.

de spesifikke formobjektene vil da arve fra vår grunnklasse. For å skape en form må vi identifisere hvilken form som kreves og opprette underklassen for den.

Vi starter med å lage en abstrakt klasse for å representere en generisk form:

dette er grunnklassen for alle våre former. La oss gå videre og lage flere konkrete, mer spesifikke former:

Så langt har vi laget en abstrakt klasse og utvidet den til å passe til forskjellige former som vil være tilgjengelig i vårt bibliotek. For å skape de forskjellige formobjektene, må kundene kjenne navnene og detaljene i våre former og utføre opprettelsen separat.

Dette er Hvor Fabrikkmetoden kommer inn i spill.

Fabrikkmetodedesignmønsteret vil hjelpe oss med å abstrahere de tilgjengelige figurene fra klienten, dvs. klienten trenger ikke å kjenne alle de tilgjengelige figurene, men bare lage det de trenger under kjøring. Det vil også tillate oss å sentralisere og innkapsle objektopprettelsen.

La oss oppnå dette ved å lage en ShapeFactory som vil bli brukt til å lage de spesifikke formklassene basert på klientens inngang:

Dette er vårt grensesnitt for opprettelse. Vi kaller ikke konstruktørene av betongklasser, vi kaller Fabrikken og ber Den om å skape en form.

Vår ShapeFactory fungerer ved å motta informasjon om en figur som et navn og de nødvendige dimensjonene. Vår fabrikkmetode create_shape() vil da bli brukt til å lage og returnere klare objekter av de ønskede figurene.

klienten trenger ikke å vite noe om objektopprettelsen eller detaljene. Ved hjelp av fabrikkobjektet kan de lage objekter med minimal kunnskap om hvordan de fungerer:

Kjører denne koden vil resultere i:

Eller vi kan bygge en annen form:

det som er verdt å merke seg er at i tillegg til at klienten ikke trenger å vite mye om opprettelsesprosessen – når vi ønsker å instantiere et objekt, kaller vi ikke konstruktøren til klassen. Vi ber fabrikken om å gjøre dette for oss basert på informasjonen vi sender til create_shape() – funksjonen.

Fordeler Og Ulemper

Pros

En av de store fordelene ved Å bruke Fabrikkmetodedesignmønsteret er at koden vår blir løst koblet ved at flertallet av komponentene i koden vår ikke er klar over andre komponenter i samme kodebase.

dette resulterer i kode som er lett å forstå og teste og legge til mer funksjonalitet til bestemte komponenter uten å påvirke eller bryte hele programmet.

Fabrikkmetodedesignmønsteret bidrar også til å opprettholde Prinsippet Om Enkeltansvar der klasser og objekter som håndterer spesifikk funksjonalitet, resulterer i bedre kode.

Ulemper

Opprettelse av flere klasser fører til slutt til mindre lesbarhet. Hvis kombinert med En Abstrakt Fabrikk( fabrikk av fabrikker), vil koden snart bli verbose, men vedlikeholdbar.

Konklusjon

Til slutt gir Fabrikkmetodens Designmønster oss mulighet til å lage objekter uten å spesifisere den nøyaktige klassen som kreves for å opprette det aktuelle objektet. Dette gjør at vi kan avkoble koden vår og forbedre gjenbrukbarheten.

det er viktig å merke seg at, akkurat som alle andre designmønstre, er det bare egnet for bestemte situasjoner og ikke alle utviklingsscenarier. En vurdering av situasjonen ved hånden er avgjørende før du bestemmer deg for å implementere Fabrikkmetodens Designmønster for å høste fordelene av mønsteret.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.