Je ustvarjalni oblikovalski vzorec ki govori o ustvarjanju predmeta. Vzorec tovarniškega načrtovanja pravi, da je treba definirati vmesnik (vmesnik java ali abstraktni razred) za ustvarjanje predmeta in prepustiti podrazredom, da se odločijo, kateri razred bodo instancirali.
Pomembne teme za vzorec načrtovanja metode Factory v Javi
- Kaj je vzorec načrtovanja tovarniške metode v Javi?
- Kdaj uporabiti vzorec načrtovanja tovarniške metode v Javi?
- Ključne komponente vzorca načrtovanja tovarniške metode
- Primer vzorca načrtovanja tovarniške metode v Javi
- Primeri uporabe vzorca načrtovanja tovarniške metode v Javi
- Prednosti vzorca načrtovanja tovarniške metode v Javi
- Slabosti vzorca načrtovanja tovarniške metode v Javi
Kaj je vzorec načrtovanja tovarniške metode v Javi?
Vzorec načrtovanja tovarniške metode definira vmesnik za ustvarjanje predmeta, vendar naj podrazred odloči, kateri razred bo primerjal. Tovarniška metoda omogoča, da razred odloži primerek na podrazred.
Spodaj je razlaga zgornje slike:
- Tovarniška metoda v vmesniku omogoča, da razred odloži instanciacijo na enega ali več konkretnih podrazredov.
- Ker ti oblikovalski vzorci govorijo o instanciranju predmeta, spadajo v kategorijo ustvarjalnih oblikovalskih vzorcev.
- Če opazimo ime Tovarniška metoda , to pomeni, da obstaja metoda, ki je tovarna, in na splošno so tovarne vključene v ustvarjalne stvari in tukaj s tem se ustvari objekt.
- To je eden najboljših načinov za ustvarjanje predmeta, kjer je logika ustvarjanja objekta skrita pred odjemalcem. Zdaj pa poglejmo izvedbo.
Kdaj uporabiti vzorec načrtovanja tovarniške metode v Javi?
Vzorec načrtovanja tovarniške metode je mogoče uporabiti v Javi v naslednjih primerih:
- Razred ne more predvideti vrste predmetov, ki jih mora ustvariti.
- Razred želi, da njegovi podrazredi določajo objekte, ki jih ustvari.
- Razredi prenesejo odgovornost na enega od več podrazredov pomočnikov, vi pa si prizadevate ohraniti informacije o tem, kateri podrazred pomočnikov je pooblaščenec znotraj določenega obsega ali lokacije.
Ključne komponente vzorca načrtovanja tovarniške metode
Izdelek
- Je abstrakten razred ali vmesnik, ki definira skupne operacije za objekte, ki jih bo ustvarila tovarna.
- Konkretni izdelki so dejanski razredi, ki izvajajo vmesnik izdelka, pri čemer vsak predstavlja določeno vrsto predmeta, ki ga je treba ustvariti.
Ustvarjalec
- To je abstraktni razred ali vmesnik, ki deklarira tovarniško metodo.
- Ta metoda je odgovorna za ustvarjanje predmetov Product, vendar delegira dejansko ustvarjanje podrazredom.
Betonski ustvarjalci
- To so podrazredi Creatorja, ki izvajajo tovarniško metodo.
- Odločijo se, kateri betonski izdelek bodo izdelali, pogosto na podlagi vhodnih parametrov ali konfiguracije.
Tovarniška metoda
- To je metoda, definirana v razredu Creator, ki je odgovorna za ustvarjanje predmetov Product.
- Običajno je deklariran kot abstrakten v Creatorju in implementiran v Concrete Creators.
Primer vzorca načrtovanja tovarniške metode v Javi
Izjava o težavi
Razvijate programski sistem za platformo za e-trgovino, ki obravnava različne vrste izdelkov. Vsaka kategorija izdelkov (npr. elektronika, oblačila, knjige) zahteva posebno ravnanje med ustvarjanjem. Vendar pa želite ločiti odjemalsko kodo od konkretne logike ustvarjanja izdelka, da povečate prilagodljivost in vzdržljivost. Poleg tega želite omogočiti preprosto razširitev z dodajanjem novih vrst izdelkov v prihodnosti brez spreminjanja obstoječe kode.
Rešitev z uporabo abstraktnega razreda
Zgornjo težavo je mogoče rešiti z vzorcem načrtovanja tovarniške metode:
Java
// Abstract Product Class> abstract> class> Product {> > public> abstract> void> display();> }> // Concrete Products> class> ConcreteProductA> extends> Product {> > @Override> > public> void> display() {> > System.out.println(> 'This is Concrete Product A.'> );> > }> }> class> ConcreteProductB> extends> Product {> > @Override> > public> void> display() {> > System.out.println(> 'This is Concrete Product B.'> );> > }> }> // Creator Abstract Class> abstract> class> Creator {> > public> abstract> Product factoryMethod();> }> // Concrete Creators> class> ConcreteCreatorA> extends> Creator {> > @Override> > public> Product factoryMethod() {> > return> new> ConcreteProductA();> > }> }> class> ConcreteCreatorB> extends> Creator {> > @Override> > public> Product factoryMethod() {> > return> new> ConcreteProductB();> > }> }> // Client Code> public> class> FactoryMethodExample {> > public> static> void> main(String[] args) {> > Creator creatorA => new> ConcreteCreatorA();> > Product productA = creatorA.factoryMethod();> > productA.display();> > Creator creatorB => new> ConcreteCreatorB();> > Product productB = creatorB.factoryMethod();> > productB.display();> > }> }> |
>
>Izhod
This is Concrete Product A. This is Concrete Product B.>
Rešitev z uporabo vmesnika
Zgornjo težavo je mogoče rešiti z vzorcem načrtovanja tovarniške metode:
Java
// Product Interface> interface> Product {> > void> display();> }> // Concrete Products> class> ConcreteProductA> implements> Product {> > @Override> > public> void> display() {> > System.out.println(> 'This is Concrete Product A.'> );> > }> }> class> ConcreteProductB> implements> Product {> > @Override> > public> void> display() {> > System.out.println(> 'This is Concrete Product B.'> );> > }> }> // Factory Interface> interface> Factory {> > Product factoryMethod();> }> // Concrete Factories> class> ConcreteFactoryA> implements> Factory {> > @Override> > public> Product factoryMethod() {> > return> new> ConcreteProductA();> > }> }> class> ConcreteFactoryB> implements> Factory {> > @Override> > public> Product factoryMethod() {> > return> new> ConcreteProductB();> > }> }> // Client Code> public> class> FactoryMethodExample {> > public> static> void> main(String[] args) {> > Factory factoryA => new> ConcreteFactoryA();> > Product productA = factoryA.factoryMethod();> > productA.display();> > Factory factoryB => new> ConcreteFactoryB();> > Product productB = factoryB.factoryMethod();> > productB.display();> > }> }> |
>
>Izhod
This is Concrete Product A. This is Concrete Product B.>
Primeri uporabe vzorca načrtovanja tovarniške metode v Javi
Tukaj je nekaj pogostih aplikacij vzorca načrtovanja tovarniške metode v Javi:
- Ustvarjalni okviri:
- JDBC (Java Database Connectivity) obsežno uporablja tovarne za ustvarjanje povezav, stavkov in naborov rezultatov. Ogrodja za vbrizgavanje odvisnosti, kot sta Spring in Guice, se močno zanašajo na tovarne za ustvarjanje in upravljanje bean-ov.
- Kompleti orodij GUI:
- Swing in JavaFX uporabljata tovarne za ustvarjanje komponent uporabniškega vmesnika, kot so gumbi, besedilna polja in oznake, kar omogoča prilagajanje in prilagodljivost oblikovanja uporabniškega vmesnika.
- Ogrodja beleženja:
- Ogrodja za beleženje, kot sta Log4j in Logback, uporabljajo tovarne za ustvarjanje zapisovalnikov z različnimi konfiguracijami, ki omogočajo nadzor nad nivoji beleženja in izhodnimi cilji.
- Serializacija in deserializacija:
- Ogrodja za serializacijo objektov pogosto uporabljajo tovarne za ustvarjanje objektov iz serializiranih podatkov, ki podpirajo različne formate serializacije in različice.
- Sistemi vtičnikov:
- Sistemi, ki temeljijo na vtičnikih, pogosto uporabljajo tovarne za dinamično nalaganje in ustvarjanje primerkov vtičnikov, kar omogoča razširljivost in prilagajanje.
- Razvoj igre:
- Igralni stroji pogosto uporabljajo tovarne za ustvarjanje različnih vrst igralnih predmetov, likov in ravni, kar spodbuja organizacijo kode in prilagodljivost.
- Spletni razvoj:
- Spletna ogrodja včasih uporabljajo tovarne za ustvarjanje komponent pogleda, krmilnikov in storitev, kar omogoča modularnost in preizkušljivost v spletnih aplikacijah.
Prednosti vzorca načrtovanja tovarniške metode v Javi
Prednosti vzorca načrtovanja tovarniške metode v Javi so:
- Ločitev: Ločuje logiko ustvarjanja objektov od odjemalske kode, ki uporablja te objekte. Zaradi tega je koda bolj prilagodljiva in vzdržljiva, ker spremembe v procesu ustvarjanja ne zahtevajo sprememb kode odjemalca.
- Razširljivost: Preprosto je uvesti nove vrste izdelkov, ne da bi spremenili kodo odjemalca. Preprosto morate ustvariti nov podrazred Concrete Creator in implementirati tovarniško metodo za izdelavo novega izdelka.
- Preizkušljivost: Poenostavi preizkušanje enote, tako da vam omogoča, da se med preizkusi norčujete iz ustvarjanja izdelka ali ga onemogočite. Različne izvedbe izdelkov lahko testirate ločeno, ne da bi se zanašali na dejansko ustvarjanje predmeta.
- Ponovna uporabnost kode: Tovarniško metodo je mogoče ponovno uporabiti v različnih delih aplikacije, kjer je potrebno ustvarjanje predmeta. To spodbuja centralizacijo in ponovno uporabo logike ustvarjanja objektov.
- Enkapsulacija: Pred kodo odjemalca skrije konkretne razrede izdelkov, zaradi česar je koda manj odvisna od specifičnih implementacij. To izboljša vzdržljivost in zmanjša spajanje.
Slabosti vzorca načrtovanja tovarniške metode v Javi
Slabosti vzorca načrtovanja tovarniške metode v Javi so:
- Povečana kompleksnost: Predstavlja dodatne razrede in vmesnike ter dodaja plast abstrakcije, ki lahko naredi kodo bolj zapleteno za razumevanje in vzdrževanje, zlasti za tiste, ki vzorca ne poznajo.
- režijski stroški: Uporaba polimorfizma in dinamične vezave lahko rahlo vpliva na zmogljivost, čeprav je to v večini aplikacij pogosto zanemarljivo.
- Tesna povezanost znotraj hierarhij izdelkov: Ustvarjalci betona so še vedno tesno povezani s svojimi ustreznimi izdelki betona. Spremembe enega pogosto zahtevajo spremembe drugega.
- Odvisnost od konkretnih podrazredov: Koda odjemalca je še vedno odvisna od abstraktnega razreda Creator, ki zahteva poznavanje njegovih konkretnih podrazredov za pravilne klice tovarniških metod.
- Možnost prekomerne uporabe: Pomembno je, da vzorec tovarniške metode uporabljate preudarno, da se izognete pretiranemu inženiringu aplikacije. Preprosto ustvarjanje predmetov je pogosto mogoče izvesti neposredno brez potrebe po tovarni.
- Testni izzivi: Samo testiranje tovarniške logike je lahko bolj zapleteno.
Zaključek
Do sedaj smo se naučili, kaj je vzorec načrtovanja tovarniške metode in kako ga implementirati. Verjamem, da zdaj dobro razumemo prednosti tega oblikovalskega mehanizma. Tovarniške metode prežemajo komplete orodij in ogrodja. Primer prejšnjega dokumenta je tipična uporaba v MacApp in ET++.
matematika naključna java
Nadaljnje branje : Vadnica za vzorce oblikovanja Java