logo

Vzor továrenskej metódy

Výrobný vzor alebo vzor továrenskej metódy hovorí, že práve definujte rozhranie alebo abstraktnú triedu na vytváranie objektu, ale nechajte podtriedy rozhodnúť, ktorú triedu inštanciovať. Inými slovami, podtriedy sú zodpovedné za vytvorenie inštancie triedy.

linuxové príkazy

Vzor továrenskej metódy je tiež známy ako Virtuálny konštruktor.

Výhoda továrenského vzoru dizajnu

  • Vzor továrenskej metódy umožňuje podtriedam vybrať si typ objektov, ktoré sa majú vytvoriť.
  • Propaguje to voľné spojenie odstránením potreby spájať triedy špecifické pre aplikáciu do kódu. To znamená, že kód interaguje výlučne s výsledným rozhraním alebo abstraktnou triedou, takže bude fungovať s akýmikoľvek triedami, ktoré implementujú toto rozhranie alebo ktoré rozširujú túto abstraktnú triedu.

Použitie továrenského dizajnového vzoru

  • Keď trieda nevie, aké podtriedy bude potrebné vytvoriť
  • Keď trieda chce, aby jej podtriedy špecifikovali objekty, ktoré sa majú vytvoriť.
  • Keď si rodičovské triedy vyberú vytváranie objektov do svojich podtried.

UML pre vzor továrenskej metódy

  • Vytvoríme abstraktnú triedu Plan a konkrétne triedy, ktoré rozšíria abstraktnú triedu Plan. Továrenská trieda GetPlanFactory je definovaná ako ďalší krok.
  • Trieda GenerateBill použije GetPlanFactory na získanie objektu Plan. Pošle informácie (DOMESTICPLAN / COMMERCIALPLAN / INSTITUTIONALPLAN) do GetPalnFactory, aby získal typ objektu, ktorý potrebuje.

Vypočítajte účet za elektrinu: Reálny príklad továrenskej metódy

Krok 1: Vytvorte abstraktnú triedu 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. 

Krok 2: Vytvorte konkrétne triedy, ktoré rozširujú abstraktnú triedu 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. 

Krok 3: Vytvorte GetPlanFactory na generovanie objektu konkrétnych tried na základe daných informácií.

filmy123 až
 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. 

Krok 4: Vygenerujte Bill pomocou GetPlanFactory na získanie objektu konkrétnych tried odovzdaním informácií, ako je typ plánu DOMESTICPLAN alebo COMMERCIALPLAN alebo 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. 

stiahnite si tento príklad účtu za elektrinu

Výkon