Rūpnīcas modelis vai rūpnīcas metodes modelis saka, ka tikai definējiet saskarni vai abstraktu klasi objekta izveidei, bet ļaujiet apakšklasēm izlemt, kuru klasi izveidot. Citiem vārdiem sakot, apakšklases ir atbildīgas par klases eksemplāra izveidi.
linux komandas, kuras
Rūpnīcas metodes modelis ir pazīstams arī kā Virtuālais konstruktors.
Rūpnīcas dizaina modeļa priekšrocība
- Rūpnīcas metodes modelis ļauj apakšklasēm izvēlēties veidojamo objektu veidu.
- Tas veicina vaļīga sakabe novēršot nepieciešamību kodā saistīt lietojumprogrammai specifiskas klases. Tas nozīmē, ka kods mijiedarbojas tikai ar iegūto saskarni vai abstrakto klasi, lai tas darbotos ar visām klasēm, kas ievieš šo saskarni vai paplašina šo abstrakto klasi.
Rūpnīcas dizaina modeļa izmantošana
- Kad klase nezina, kuras apakšklases būs jāizveido
- Kad klase vēlas, lai tās apakšklases norādītu veidojamos objektus.
- Kad vecākklases izvēlas objektu izveidi savām apakšklasēm.
UML rūpnīcas metodes modelim
- Mēs izveidosim Plan abstrakto klasi un konkrētas klases, kas paplašina Plan abstrakto klasi. Rūpnīcas klase GetPlanFactory ir definēta kā nākamais solis.
- GenerateBill klase izmantos GetPlanFactory, lai iegūtu plāna objektu. Tas nosūtīs informāciju (DOMESTICPLAN / COMMERCIALPLAN / INSTITUTIONALPLAN) GetPalnFactory, lai iegūtu nepieciešamo objekta veidu.
Aprēķiniet elektrības rēķinu: rūpnīcas metodes reāls piemērs
1. darbība: Izveidojiet plāna abstraktu klasi.
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. darbība: Izveidojiet konkrētas klases, kas paplašina Plan abstrakto klasi.
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. darbība: Izveidojiet GetPlanFactory, lai ģenerētu konkrētu klašu objektu, pamatojoties uz sniegto informāciju.
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. darbība: Ģenerējiet rēķinu, izmantojot GetPlanFactory, lai iegūtu konkrētu klašu objektu, nododot tādu informāciju kā plāna veids DOMESTICPLAN vai COMMERCIALPLAN vai 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.
lejupielādējiet šo elektrības rēķina piemēru