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

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Java設計模式——工廠設計模式

Java設計模式——工廠設計模式

來源:程序員人生   發布時間:2017-02-15 09:11:30 閱讀次數:3185次

學習Java的同學注意了!!! 
學習進程中遇到甚么問題或想獲得學習資源的話,歡迎加入Java學習交換群,群號碼:183993990  我們1起學Java!


工廠模式:主要用來實例化有共同接口的類,工廠模式可以動態決定應當實例化那1個類。

工廠模式的形態
工廠模式主要用1下幾種形態:
1:簡單工廠(Simple Factory)。
2:工廠方法(Factory Method)。
3:抽象工廠(Abstract Factory)。

簡單工廠(Simple Factory)
又叫靜態工廠,是工廠模式3中狀態中結構最為簡單的。主要有1個靜態方法,用來接受參數,并根據參數來決定返回實現同1接口的不同類的實例。我們來看1個具體的例子:
假定1家工廠,幾生產洗衣機,有生產冰箱,還有空調等等..
我們先為所有產品定義1個共同的產品接口
  1. public interface Product{} 

接著我們讓這個工廠的所有產品都必須實現此接口
  1. public class Washer implements Product{ 
  2.    public Washer(){ 
  3.        System.out.println("洗衣機被制造了"); 
  4.    } 
  5.  
  6. public class Icebox implements Product{ 
  7.    public Icebox(){ 
  8.        System.out.println("冰箱被制造了"); 
  9.    } 
  10.  
  11. public class AirCondition implements Product{ 
  12.    public Icebox(){ 
  13.        System.out.println("空調被制造了"); 
  14.    } 

接下來我們來寫1個工廠類,有它來負責生產以上的產品
  1. public class SimpleFactory { 
  2.      
  3.     public static Product factory(String productName) throws Exception{ 
  4.         if(productName.equals("Washer")){ 
  5.             return new Washer(); 
  6.         }else if(productName.equals("Icebox")){ 
  7.             return new Icebox(); 
  8.         }else if(productName.equals("AirCondition")){ 
  9.             return new AirCondition(); 
  10.         }else
  11.             throw new Exception("沒有該產品"); 
  12.         } 
  13.     } 

好了,有了這個工廠類,我們就能夠開始下訂單了,SimpleFactory將根據不同的訂單類決定生產甚么產品。
  1. public static void main(String[] args) { 
  2.     try { 
  3.               SimpleFactory.factory("Washer"); 
  4.               SimpleFactory.factory("Icebox"); 
  5.               SimpleFactory.factory("AirCondition"); 
  6.             } catch (Exception e) { 
  7.         e.printStackTrace(); 
  8.     } 

由上面的代碼可以看出,簡單工廠的核心就是1個SimpleFactory類,他具有必要的邏輯判斷能力和所有產品的創建權利,我們只需要向把訂單給他,就可以得到我們想要的產品。這使用起來似乎非常方便。
但,實際上,這個SimpleFactory有很多的局限。首先,我們每次想要增加1種新產品的時候,都必須修改SimpleFactory的原代碼。其次,當我們具有很多很多產品的時候,而且產品之間又存在復雜的層次關系的時候,這個類必須具有復雜的邏輯判斷能力,其代碼量也將不斷地激增,這對以后的保護簡直就是恐怖兩個字...
還有就是,全部系統都嚴重依賴SimpleFactory類,只要SimpleFactory類1出問題,系統就進入不能工作的狀態,這也是最為致命的1點....
以上的不足將在工廠模式的另外兩種狀態中得到解決。

工廠方法(Factory Method)
上面的代碼告知我們,簡單工廠其實不簡單,它是全部模式的核心,1旦他出了問題,全部模式都將受影響而不能工作,為了下降風險和為往后的保護、擴大做準備,我們需要對它進行重構,引入工廠方法
工廠方法為工廠類定義了接口,用多態來削弱了工廠類的職能,以下是工廠接口的定義:
  1. public interface Factory{ 
  2.   public Product create(); 

我們再來定義1個產品接口
  1. public interface Product{} 

1下是實現了產品接口的產品類
  1. public class Washer implements Product{ 
  2.    public Washer(){ 
  3.        System.out.println("洗衣機被制造了"); 
  4.    } 
  5.  
  6. public class Icebox implements Product{ 
  7.    public Icebox(){ 
  8.        System.out.println("冰箱被制造了"); 
  9.    } 
  10.  
  11. public class AirCondition implements Product{ 
  12.    public Icebox(){ 
  13.        System.out.println("空調被制造了"); 
  14.    } 

接下來,就是工廠方法的核心部份,也就是具體創建產品對象的具體工廠類,
  1. //創建洗衣機的工廠 
  2. public class CreateWasher implements Factory{ 
  3.     public Product create(){ 
  4.           return new Washer(); 
  5.     } 
  6.  
  7. //創建冰箱的工廠 
  8. public class CreateIcebox implements Factory{ 
  9.     public Product create(){ 
  10.           return new Icebox(); 
  11.     } 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲欧美日韩图片 | 国产成人十八黄网片 | 国产免费一区2区3区4区 | 视频网站高清免费 | 欧美日韩国产一区 | 在线免费观看亚洲 | 亚洲国产欧美精品一区二区三区 | 成年人视频免费在线观看 | 国产精品福利片免费看 | 欧美人与动人物a级网站 | 日本中文字幕在线播放 | 亚洲性一区 | 免费播放观看在线视频 | free性欧美另类高清 | 亚洲第一色区 | 男女免费观看在线爽爽爽视频 | 久久午夜一区二区 | 亚洲免费视频播放 | www.久久精品视频 | 亚洲黄色免费观看 | 亚州欧美| 欧美一级毛片无遮挡 | 午夜视频网 | 欧美手机手机在线视频一区 | 欧美性活生活视频 | 国产福利不卡一区二区三区 | 手机在线看片国产日韩生活片 | 亚洲一区亚洲二区亚洲三区 | 精品一区二区三 | 私人毛片免费高清影视院 | 亚洲欧洲久久久精品 | 秋霞一级特黄真人毛片 | 伊人9999 | 亚洲在线天堂 | 97影院午夜在线观看琪琪 | 毛片新网址| 日本一级毛片在线观看 | 在线观看日韩欧美 | 欧美自拍网 | 成在线人免费视频一区二区三区 | 亚洲精品在线视频观看 |