logo

Rūpnīcas metodes dizaina modelis Java

Tas ir radošs dizaina modelis kas runā par objekta izveidi. Rūpnīcas dizaina modelī ir norādīts, ka objekta izveidei ir jādefinē saskarne (Java saskarne vai abstrakta klase) un jāļauj apakšklasēm izlemt, kuru klasi izveidot.

rūpnīcas metode



Svarīgas tēmas Java rūpnīcas metodes projektēšanas modelim

Kāds ir Java rūpnīcas metodes projektēšanas modelis?

Rūpnīcas metodes dizaina modelis definē saskarni objekta izveidei, bet ļaujiet apakšklasei izlemt, kuru klasi izveidot. Rūpnīcas metode ļauj klasei atlikt instantiāciju apakšklasei.

mans dzīvais krikets

Kas-ir-Rūpnīcas-Metode-Design-Pattern



Tālāk ir sniegts iepriekš minētā attēla skaidrojums:

  • Rūpnīcas metode saskarnē ļauj klasei atlikt instantiāciju uz vienu vai vairākām konkrētām apakšklasēm.
  • Tā kā šie dizaina modeļi runā par objekta instantiāciju, tie ietilpst radošu dizaina modeļu kategorijā.
  • Ja pamanām nosaukumu Rūpnīcas metode , tas nozīmē, ka pastāv metode, kas ir rūpnīca, un kopumā rūpnīcas ir saistītas ar radīšanas lietām, un šeit ar to tiek izveidots objekts.
  • Tas ir viens no labākajiem veidiem, kā izveidot objektu, kur objekta izveides loģika ir paslēpta no klienta. Tagad apskatīsim ieviešanu.

Kad Java lietot rūpnīcas metodes dizaina modeli?

Rūpnīcas metodes dizaina modeli Java var izmantot šādos gadījumos:

  • Klase nevar paredzēt, kāda veida objekti tai ir jāizveido.
  • Klase vēlas, lai tās apakšklases norādītu tās izveidotos objektus.
  • Klases deleģē atbildību vienai no vairākām palīgu apakšklasēm, un jūs cenšaties saglabāt informāciju par to, kura palīga apakšklase ir deleģēta noteiktā apjomā vai vietā.

Rūpnīcas metodes dizaina modeļa galvenās sastāvdaļas

Key-Component-of-Factory-Method-Design-Pattern-in-Java



Produkts

  • Tā ir abstrakta klase vai interfeiss, kas nosaka kopīgās darbības objektiem, kurus rūpnīca izveidos.
  • Betona izstrādājumi ir faktiskās klases, kas ievieš produkta saskarni, un katra no tām pārstāv noteiktu veidojamā objekta veidu.

Radītājs

  • Tā ir abstrakta klase vai interfeiss, kas deklarē rūpnīcas metodi.
  • Šī metode ir atbildīga par produktu objektu izveidi, taču tā deleģē faktisko izveidi apakšklasēm.

Betona veidotāji

  • Tās ir Radītāja apakšklases, kas ievieš rūpnīcas metodi.
  • Viņi izlemj, kuru konkrētu betona izstrādājumu izveidot, bieži vien pamatojoties uz ievades parametriem vai konfigurāciju.

Rūpnīcas metode

  • Tā ir Creator klasē definēta metode, kas ir atbildīga par produktu objektu izveidi.
  • Tas parasti tiek pasludināts kā abstrakts programmā Creator un tiek ieviests konkrētajā veidolā.

Rūpnīcas metodes dizaina modeļa piemērs Java

Problēmas paziņojums

Jūs izstrādājat programmatūras sistēmu e-komercijas platformai, kas nodarbojas ar dažāda veida produktiem. Katrai produktu kategorijai (piemēram, elektronika, apģērbs, grāmatas) izveides laikā ir nepieciešama īpaša apstrāde. Tomēr vēlaties atsaistīt klienta kodu no konkrētā produkta izveides loģikas, lai uzlabotu elastību un apkopi. Turklāt vēlaties ļaut viegli paplašināt, nākotnē pievienojot jaunus produktu veidus, nemainot esošo kodu.

Risinājums, izmantojot abstrakto klasi

Iepriekš minēto problēmu var atrisināt, izmantojot rūpnīcas metodes dizaina modeli:

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();> >}> }>

>

>

Izvade

This is Concrete Product A. This is Concrete Product B.>

Risinājums, izmantojot interfeisu

Iepriekš minēto problēmu var atrisināt, izmantojot rūpnīcas metodes dizaina modeli:

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();> >}> }>

>

>

Izvade

This is Concrete Product A. This is Concrete Product B.>

Rūpnīcas metodes dizaina modeļa izmantošanas gadījumi Java

Šeit ir dažas izplatītas Java rūpnīcas metodes dizaina modeļa lietojumprogrammas:

  • Radīšanas ietvari:
    • JDBC (Java datu bāzes savienojamība) plaši izmanto rūpnīcas, lai izveidotu savienojumus, paziņojumus un rezultātu kopas. Atkarības ievadīšanas sistēmas, piemēram, Spring un Guice, pupiņu izveidei un pārvaldībai lielā mērā ir atkarīgas no rūpnīcām.
  • GUI rīkkopas:
    • Swing un JavaFX izmanto rūpnīcas, lai izveidotu lietotāja interfeisa komponentus, piemēram, pogas, teksta laukus un etiķetes, kas ļauj pielāgot un elastīgi izstrādāt lietotāja interfeisu.
  • Mežizstrādes ietvari:
    • Reģistrācijas sistēmas, piemēram, Log4j un Logback, izmanto rūpnīcas, lai izveidotu reģistrētājus ar dažādām konfigurācijām, ļaujot kontrolēt reģistrēšanas līmeņus un izvades galamērķus.
  • Serializācija un deserializācija:
    • Objektu serializācijas sistēmas bieži izmanto rūpnīcas, lai izveidotu objektus no serializētiem datiem, atbalstot dažādus serializācijas formātus un versiju veidošanu.
  • Spraudņu sistēmas:
    • Uz spraudņiem balstītās sistēmas bieži izmanto rūpnīcas, lai dinamiski ielādētu un izveidotu spraudņu gadījumus, tādējādi nodrošinot paplašināšanu un pielāgošanu.
  • Spēļu izstrāde:
    • Spēļu dzinēji bieži izmanto rūpnīcas, lai izveidotu dažāda veida spēļu objektus, rakstzīmes un līmeņus, veicinot koda organizēšanu un elastību.
  • Web izstrāde:
    • Tīmekļa ietvari dažkārt izmanto rūpnīcas, lai izveidotu skatu komponentus, kontrollerus un pakalpojumus, nodrošinot modularitāti un pārbaudāmību tīmekļa lietojumprogrammās.

Java rūpnīcas metodes dizaina modeļa priekšrocības

Java rūpnīcas metodes dizaina modeļa priekšrocības ir:

  • Atsaiste: Tas atdala objektu izveides loģiku no klienta koda, kas izmanto šos objektus. Tas padara kodu elastīgāku un apkopējamāku, jo izveides procesa izmaiņām nav nepieciešamas izmaiņas klienta kodā.
  • Paplašināmība: Ir viegli ieviest jaunus produktu veidus, nemainot klienta kodu. Jums vienkārši jāizveido jauna Concrete Creator apakšklase un jāievieš rūpnīcas metode, lai ražotu jauno produktu.
  • Pārbaudāmība: Tas vienkāršo vienību testēšanu, ļaujot pārbaužu laikā izsmiet vai apturēt produkta izveidi. Jūs varat pārbaudīt dažādu produktu ieviešanu atsevišķi, nepaļaujoties uz faktisko objektu izveidi.
  • Koda atkārtota izmantošana: Rūpnīcas metodi var atkārtoti izmantot dažādās lietojumprogrammas daļās, kur ir nepieciešams izveidot objektu. Tas veicina objektu izveides loģikas centralizāciju un atkārtotu izmantošanu.
  • Iekapsulēšana: Tas slēpj konkrētas produktu klases no klienta koda, padarot kodu mazāk atkarīgu no konkrētām implementācijām. Tas uzlabo apkopi un samazina savienojumu.

Java rūpnīcas metodes dizaina modeļa trūkumi

Java rūpnīcas metodes dizaina modeļa trūkumi ir:

  • Paaugstināta sarežģītība: Tas ievieš papildu klases un saskarnes, pievienojot abstrakcijas slāni, kas var padarīt kodu sarežģītāku, lai to saprastu un uzturētu, īpaši tiem, kas nav pazīstami ar modeli.
  • Pieskaitāmās izmaksas: Polimorfisma un dinamiskās saistīšanas izmantošana var nedaudz ietekmēt veiktspēju, lai gan lielākajā daļā lietojumu tas bieži vien ir nenozīmīgs.
  • Stingra saikne produktu hierarhijās: Betona veidotāji joprojām ir cieši saistīti ar atbilstošajiem betona izstrādājumiem. Izmaiņas vienā bieži prasa izmaiņas citā.
  • Atkarība no betona apakšklasēm: Klienta kods joprojām ir atkarīgs no abstraktās Creator klases, un, lai veiktu pareizus rūpnīcas metožu izsaukumus, ir nepieciešamas zināšanas par tās konkrētajām apakšklasēm.
  • Pārmērīgas izmantošanas potenciāls: Rūpnīcas metodes modeli ir svarīgi izmantot saprātīgi, lai izvairītos no pārmērīgas lietojumprogrammas izstrādes. Vienkāršu objektu izveidi bieži var veikt tieši, neizmantojot rūpnīcu.
  • Testēšanas izaicinājumi: Rūpnīcas loģikas pārbaude var būt sarežģītāka.

Secinājums

Līdz šim mēs uzzinājām, kas ir Factory metodes dizaina modelis un kā to ieviest. Es uzskatu, ka tagad mums ir godīga izpratne par šī dizaina mehānisma priekšrocībām. Rūpnīcas metodes izmanto rīku komplektus un ietvarus. Iepriekšējais dokumenta piemērs ir tipisks lietojums MacApp un ET++.

Lasīt tālāk : Java dizaina modeļu apmācība