多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

java語言實現創建型設計模式―工廠方法模式

來源:程序員人生   發布時間:2015-08-08 09:04:14 閱讀次數:3272次

1、描寫

基于簡單工廠模式中將所有類的創建和初始化放在1個工廠類中出現的問題,我們引進了工廠方法模式,該模式是GoF總結的23種設計模式的第1種,這個設計模式將1個工廠類拆分成多個具體的工廠類,每一個具體的工廠類負責相應的類的對象的創建。

在工廠方法模式中,抽象工廠類負責定義創建對象的接口,具體對象的創建由實現該抽象工廠的具體工廠類來完成,它由4部份組成:抽象工廠類、實現抽象工廠類的具體工廠類、抽象類、實現抽象類的具體類。


2、工廠方法模式的優缺點

優點:在工廠方法模式中,創建對象的任務由具體的工廠類負責,1個具體類對應1個具體的工廠類,再由抽象工廠類定義所有具體工廠類創建對象的統1接口,客戶端只負責調用具體類創建對應的對象。

如果有1個新的產品加入,那末只需要增加1個具體類和創建這個具體類的工廠類便可,不需要修改原來已有的代碼,同1個類的代碼量也不會變大,更利于后期的保護,增強了系統的可擴大性。

缺點:每新加1個產品就要增加兩個類,需要額外地編寫代碼,增加了工作量。

3、源代碼

1、抽象方法類:

package tong.day4_30.factoryMethod; /** *抽象工廠接口,在這個接口中定義了1個createSalary()方法,由實現該接口的具體類重寫該方法,分別創建自己類的對象 * @author tong * */ public interface Factory { //這是1個公共的抽象方法,用于創建各種類的對象 public abstract Salary createSalary(); }

2、具體方法類

package tong.day4_30.factoryMethod; /** * 具體的工廠方法,用于創建特定類的對象 * @author tong * */ public class GuangdongSalaryFactory implements Factory { @Override public Salary createSalary() { //返回GuangdongSalary類的對象 return new GuangdongSalary(); } }

package tong.day4_30.factoryMethod; /** * 具體的工廠方法,用于創建特定類的對象 * @author tong * */ public class ZhejiangSalaryFactory implements Factory { @Override public Salary createSalary() { //返回ZhejiangSalary類的對象 return new ZhejiangSalary(); } }

3、抽象類

package tong.day4_30.factoryMethod; /** * 定義1個薪資接口,所有公司的具體薪資計算都實現這個接口,并重寫計算薪資的方法computeSalary() * @author tong * */ public interface Salary { public void computeSalary(); }

4、具體類

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

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

5、客戶端調用

package tong.day4_30.factoryMethod; /** * 在客戶端調用工廠方法來創建每一個具體的工廠類對象,使用具體工廠類對象來創建不同的薪資對象,由薪資對象調用computeSalary()計算薪資; * 如果還想創建更多的公司薪資,那末就創建1個相應的薪資類,再創建1個相應的薪資計算的具體工廠類。 * @author tong * */ public class Client { public static void main(String[] args) { //創建Factory對象,這里使用多態,創建不同的具體工廠類對象 Factory factory = new GuangdongSalaryFactory(); //使用具體的工廠類對象創建不同的薪資對象來計算薪資 Salary salary = factory.createSalary(); salary.computeSalary(); factory = new ZhejiangSalaryFactory(); salary = factory.createSalary(); salary.computeSalary(); } }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一区二区三区免费播放 | 午夜肉伦伦影院在线观看 | 求av网址 | 成人自拍视频 | 免费毛片网 | 国产免费一级高清淫曰本片 | 国产高清一级毛片在线不卡 | 鲁在线| 日本免费一区二区三区最新vr | 亚洲欧美日韩精品高清 | 精品国产一区二区三区www | 久久天天躁狠狠躁夜夜中文字幕 | 欧洲一区| 九月婷婷天天澡天天添天天爽 | 人善交xxx| 精品久久久99大香线蕉 | 国产午夜精品久久久久 | 精品国产一区二区三区四区不 | 欧美性在线播放 | 精品国产福利第一区二区三区 | 一级aa免费视频毛片 | www.黄色大片 | 理论片一级| 国产91在线九色 | 国产精品免费αv视频 | 一区二区福利视频 | 黄色综合 | 99国产精品久久久久久久成人热 | 欧美aa级| 国产成人啪一区二区 | 国产一区二区精品 | 日本一区二区三区免费高清在线 | 久久精品区 | 久久久久国产精品免费 | 亚洲欧美高清视频 | 国产成人91一区二区三区 | 国产高清视频在线播放 | 91最新免费地址入口 | 范冰冰一级做a爰片久久毛片 | 欧美日韩在线永久免费播放 | 一区二区三区在线 | 日本 |