更新時(shí)間:2022-07-27 11:58:19 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2246次
工廠模式或工廠方法模式表示只需定義一個(gè)接口或Java抽象類來創(chuàng)建對象,但讓子類決定要實(shí)例化哪個(gè)類。換句話說,子類負(fù)責(zé)創(chuàng)建類的實(shí)例。工廠方法模式也稱為虛擬構(gòu)造函數(shù),動(dòng)力節(jié)點(diǎn)小編給大家舉例說明。
第 1 步:創(chuàng)建一個(gè) Plan 抽象類。
導(dǎo)入 java.io.*;
抽象類 計(jì)劃{
受保護(hù)的雙倍 利率;
抽象的void getRate();
公共無效 計(jì)算賬單(整數(shù) 單位){
System.out.println(單位*速率);
}
} //計(jì)劃類結(jié)束。
第 2 步:創(chuàng)建擴(kuò)展 Plan 抽象類的具體類。
類 國內(nèi) 計(jì)劃擴(kuò)展 計(jì)劃{
//@覆蓋
公共無效 getRate(){
率= 3.50 ;
}
} //DomainPlan 類結(jié)束。
類 CommercialPlan 擴(kuò)展 計(jì)劃{
//@覆蓋
公共無效 getRate(){
率= 7.50 ;
}
/商業(yè)計(jì)劃 類結(jié)束。
類 機(jī)構(gòu) 計(jì)劃擴(kuò)展 計(jì)劃{
//@覆蓋
公共無效 getRate(){
率= 5.50 ;
}
/機(jī)構(gòu)計(jì)劃 課程結(jié)束。
第 3 步:創(chuàng)建一個(gè) GetPlanFactory 以根據(jù)給定信息生成具體類的對象。
類 GetPlanFactory{
//使用getPlan方法獲取Plan類型的對象
公共 計(jì)劃 getPlan(字符串計(jì)劃類型){
if (planType == null ){
返回空值;
}
如果(planType.equalsIgnoreCase(“DOMESTICPLAN” )){
返回新的 國內(nèi)計(jì)劃();
}
否則如果(planType.equalsIgnoreCase(“COMMERCIALPLAN” )){
返回新的 商業(yè)計(jì)劃();
}
否則如果(planType.equalsIgnoreCase(“INSTITUTIONALPLAN” )){
返回新的 機(jī)構(gòu)計(jì)劃();
}
返回空值;
}
} //GetPlanFactory 類結(jié)束。
步驟4:使用GetPlanFactory 生成Bill,通過傳遞計(jì)劃類型DOMESTICPLAN 或COMMERCIALPLAN 或INSTITUTIONALPLAN 等信息來獲取具體類的對象。
導(dǎo)入 java.io.*;
類 生成賬單{
公共靜態(tài)void main(String args[])拋出 IOException{
GetPlanFactory planFactory = new GetPlanFactory();
System.out.print( "輸入要生成賬單的計(jì)劃名稱:" );
BufferedReader br= new BufferedReader( new InputStreamReader(System.in));
字符串計(jì)劃名稱=br.readLine();
System.out.print( "輸入賬單的單位數(shù)將被計(jì)算:" );
整數(shù) 單位=整數(shù).parseInt(br.readLine());
計(jì)劃 p = planFactory.getPlan(planName);
//調(diào)用DomesticPaln的getRate()方法和calculateBill()方法。
System.out.print( "" +units+ "個(gè)單位的" +planName+ "的賬單金額為:" );
p.getRate();
p.calculateBill(單位);
}
} //GenerateBill 類結(jié)束。
輸出

以上就是關(guān)于“Java工廠方法模式示例”介紹,大家如果對此比較感興趣,想了解更多相關(guān)知識(shí),不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java工廠模式,里面有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對大家能夠有所幫助。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743