logo

Vzorec tovarniške metode

Tovarniški vzorec ali vzorec tovarniške metode pravi samo to definirajte vmesnik ali abstraktni razred za ustvarjanje predmeta, vendar naj se podrazredi odločijo, kateri razred bodo instancirali. Z drugimi besedami, podrazredi so odgovorni za ustvarjanje primerka razreda.

Vzorec tovarniške metode je znan tudi kot Virtualni konstruktor.

bah če drugače

Prednost tovarniškega vzorca oblikovanja

  • Vzorec tovarniške metode omogoča podrazredom, da izberejo vrsto objektov za ustvarjanje.
  • Spodbuja ohlapna spojka z odpravo potrebe po vezavi razredov, specifičnih za aplikacijo, v kodo. To pomeni, da koda sodeluje samo z nastalim vmesnikom ali abstraktnim razredom, tako da bo delovala z vsemi razredi, ki izvajajo ta vmesnik ali razširjajo ta abstraktni razred.

Uporaba tovarniškega oblikovalskega vzorca

  • Ko razred ne ve, katere podrazrede bo treba ustvariti
  • Ko razred želi, da njegovi podrazredi določajo objekte, ki jih je treba ustvariti.
  • Ko nadrejeni razredi izberejo ustvarjanje predmetov za svoje podrazrede.

UML za vzorec tovarniške metode

  • Ustvarili bomo abstraktni razred Plan in konkretne razrede, ki razširjajo abstraktni razred Plan. Kot naslednji korak je definiran tovarniški razred GetPlanFactory.
  • Razred GenerateBill bo uporabil GetPlanFactory za pridobitev objekta Plan. Podatke (DOMESTICPLAN / COMMERCIALPLAN / INSTITUTIONALPLAN) bo posredoval GetPalnFactory, da dobi vrsto predmeta, ki ga potrebuje.

Izračunajte račun za elektriko: resnični primer tovarniške metode

Korak 1: Ustvarite abstraktni razred Plan.

 import java.io.*; abstract class Plan{ protected double rate; abstract void getRate(); public void calculateBill(int units){ System.out.println(units*rate); } }//end of Plan class. 

2. korak: Ustvarite konkretne razrede, ki razširjajo abstraktni razred Plan.

 class DomesticPlan extends Plan{ //@override public void getRate(){ rate=3.50; } }//end of DomesticPlan class. 
 class CommercialPlan extends Plan{ //@override public void getRate(){ rate=7.50; } }//end of CommercialPlan class. 
 class InstitutionalPlan extends Plan{ //@override public void getRate(){ rate=5.50; } }//end of InstitutionalPlan class. 

3. korak: Ustvarite GetPlanFactory za ustvarjanje objekta konkretnih razredov na podlagi podanih informacij.

 class GetPlanFactory{ //use getPlan method to get object of type Plan public Plan getPlan(String planType){ if(planType == null){ return null; } if(planType.equalsIgnoreCase('DOMESTICPLAN')) { return new DomesticPlan(); } else if(planType.equalsIgnoreCase('COMMERCIALPLAN')){ return new CommercialPlan(); } else if(planType.equalsIgnoreCase('INSTITUTIONALPLAN')) { return new InstitutionalPlan(); } return null; } }//end of GetPlanFactory class. 

4. korak: Ustvarite račun z uporabo GetPlanFactory, da pridobite objekt konkretnih razredov s posredovanjem informacij, kot je vrsta načrta DOMESTICPLAN ali COMMERCIALPLAN ali INSTITUTIONALPLAN.

 import java.io.*; class GenerateBill{ public static void main(String args[])throws IOException{ GetPlanFactory planFactory = new GetPlanFactory(); System.out.print('Enter the name of plan for which the bill will be generated: '); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String planName=br.readLine(); System.out.print('Enter the number of units for bill will be calculated: '); int units=Integer.parseInt(br.readLine()); Plan p = planFactory.getPlan(planName); //call getRate() method and calculateBill()method of DomesticPaln. System.out.print('Bill amount for '+planName+' of '+units+' units is: '); p.getRate(); p.calculateBill(units); } }//end of GenerateBill class. 

prenesite ta primer računa za elektriko

Izhod