日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > java語言實現創建型模式―簡單工廠模式

java語言實現創建型模式―簡單工廠模式

來源:程序員人生   發布時間:2015-05-25 08:57:32 閱讀次數:3281次

1、描寫

簡單工廠模式又名靜態工廠方法模式,是所有工廠模式中最簡單的1個,它定義1個具體的工廠類來負責創建所有類的對象并初始化創建的對象,它主要由3部份組成:工廠類、抽象類、實現抽象類的具體類,然后通過客戶端調用工廠類創建相應的對象。

注意:簡單工廠模式不屬于GoF總結的23種設計模式,它是相當于初學java的HelloWorld案例,幫助初學者了解設計模式,增長信心的1個設計模式。


2、簡單工廠模式的優缺點

優點:相對直接在客戶端創建對象并初始化對象的值來講,簡單工廠模式將創建對象和初始化任務交給了工廠類,客戶端只負責對對象的調用,從而明確了各個類的職責。

缺點:只使用1個工廠類來創建各具特點的所有類,當具體產品的種類不斷增加,對創建的方式有所改變時就需要對這個工廠類進行不斷的改變,增加相應的判斷,增加相應的類的創建邏輯,致使工廠類的代碼愈來愈龐大,不利于后期的保護。另外,簡單工廠模式使用靜態方法來創建對象,這樣就致使這個創建對象的靜態方法不能被繼承,只能在這1個類里變得愈來愈臃腫。

總結:雖然簡單工廠模式將對象的創建和初始化工作與客戶端分離了,實現了責任的分配策略,但是所有對象的創建和初始化工作都集中到了1個具體的工廠類中,如果要創建的對象種類繁多,這個工廠類將非常龐大,不利于后期保護。


3、源代碼

1、抽象類

package tong.day4_30.introduce; /** * 定義1個薪資接口,所有公司的具體薪資計算都實現這個接口,并重寫計算薪資的方法computeSalary() * @author tong * */ public interface Salary { public void computeSalary(); }
2、具體類
package tong.day4_30.introduce; /** * 廣東分公司的薪資計算類實現了Salary接口,并重寫了該接口中的計算薪資的方法computeSalary() * @author Administrator * */ public class GuangdongSalary implements Salary { @Override public void computeSalary() { System.out.println("廣東分公司薪資計算"); } }

package tong.day4_30.introduce; /** * 河北公司的薪資計算類實現了Salary接口,并重寫了該接口中的計算薪資的方法computeSalary() * @author tong * */ public class HebeiSalary implements Salary{ @Override public void computeSalary() { System.out.println("河北分公司薪資計算"); } }

package tong.day4_30.introduce; /** * 浙江分公司的薪資計算類實現了Salary接口,并重寫了該接口中的計算薪資的方法computeSalary() * @author Administrator * */ public class ZhejiangSalary implements Salary { @Override public void computeSalary() { System.out.println("浙江分公司薪資計算"); } }
3、簡單工廠類
package tong.day4_30.introduce; /** * 簡單工廠類負責所有對象的創建和對象的初始化,這里采取java中的反射機制,根據傳入的參數來創建類的對象 * @author tong * */ public class SimpleFactory { //根據參數創建對象,這是1個靜態方法可以直接使用類名調用 public static Salary createSalary(String name) { Class<Salary> clazz = null; Salary salary = null; try { //利用反射機制獲得該參數對應的類的對象 clazz = (Class<Salary>) Class.forName(name); //使用此類對象創建對應的薪資類對象,這里使用父類指針指向子類對象,實現了多態 salary = (Salary)clazz.newInstance(); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } return salary; } }
4、客戶端調用
package tong.day4_30.introduce; /** * 在客戶端調用工廠類創建薪資的方法,并輸出結果; * 如果還想創建更多的公司薪資,那末就創建1個相應的類,在Client對象中傳入相應的參數創建相應的對象便可 * @author tong * */ public class Client { public static void main(String[] args) { //創建Client對象,以此對象調用computeSalary()方法傳入要類型參數 new Client().computeSalary("tong.day4_30.introduce.HebeiSalary"); new Client().computeSalary("tong.day4_30.introduce.ZhejiangSalary"); new Client().computeSalary("tong.day4_30.introduce.GuangdongSalary"); } /** * 根據傳入的參數調用工廠類的創建薪資方法,創建不同的薪資對象 * @param name */ public void computeSalary(String name) { //這里使用多態,根據傳入參數的不同,生成ZhejiangSalary或HebeiSalary對象 Salary salary = SimpleFactory.createSalary(name); //使用生成的對象動態調用具體類對象的方法 salary.computeSalary(); } }

4、運行結果

簡單工廠模式

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线观看国产 | www视频在线观看 | 国产一区二区三区在线看 | 人成福利视频在线观看 | 美女激情av| 曰本一区二区三区 | 国产一级免费视频 | 日韩精品一区在线观看 | 99久久精品免费看国产免费软件 | 日韩中文一区二区 | 久久精品亚洲精品国产欧美 | 亚洲精品高潮呻吟久久av | 天堂俺去俺来也www久久婷婷 | 成人精品一区二区三区电影黑人 | 在线观看国产麻豆 | 激情av一区| 黄色免费av | 国产精品日韩精品 | 久久视频精品 | 国产精品伦一区二区三级视频 | 99久久精品免费看国产免费软件 | 精品久久久影院 | 亚洲国产99| 做a视频| 五月激情av | 国产午夜精品在线观看 | 成人污| 久久久久久久久久综合 | 久久国产精品免费 | 91精品国产福利一区二区三区 | 91精品国产99久久久久久红楼 | 黄色在线观看国产 | 国产精品中文字幕在线 | 日韩免费一区二区 | 成人在线国产视频 | av免费网站在线观看 | 久久久久久久久久久福利观看 | 亚洲欧美一区二区久久 | 国产精品区二区三区日本 | 综合久久久久久久久久 | 精品日韩|