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

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > Java設(shè)計模式——工廠設(shè)計模式

Java設(shè)計模式——工廠設(shè)計模式

來源:程序員人生   發(fā)布時間:2017-02-15 09:11:30 閱讀次數(shù):3207次

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


工廠模式:主要用來實(shí)例化有共同接口的類,工廠模式可以動態(tài)決定應(yīng)當(dāng)實(shí)例化那1個類。

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

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

接著我們讓這個工廠的所有產(chǎn)品都必須實(shí)現(xiàn)此接口
  1. public class Washer implements Product{ 
  2.    public Washer(){ 
  3.        System.out.println("洗衣機(jī)被制造了"); 
  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("空調(diào)被制造了"); 
  14.    } 

接下來我們來寫1個工廠類,有它來負(fù)責(zé)生產(chǎn)以上的產(chǎn)品
  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("沒有該產(chǎn)品"); 
  12.         } 
  13.     } 

好了,有了這個工廠類,我們就能夠開始下訂單了,SimpleFactory將根據(jù)不同的訂單類決定生產(chǎn)甚么產(chǎn)品。
  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類,他具有必要的邏輯判斷能力和所有產(chǎn)品的創(chuàng)建權(quán)利,我們只需要向把訂單給他,就可以得到我們想要的產(chǎn)品。這使用起來似乎非常方便。
但,實(shí)際上,這個SimpleFactory有很多的局限。首先,我們每次想要增加1種新產(chǎn)品的時候,都必須修改SimpleFactory的原代碼。其次,當(dāng)我們具有很多很多產(chǎn)品的時候,而且產(chǎn)品之間又存在復(fù)雜的層次關(guān)系的時候,這個類必須具有復(fù)雜的邏輯判斷能力,其代碼量也將不斷地激增,這對以后的保護(hù)簡直就是恐怖兩個字...
還有就是,全部系統(tǒng)都嚴(yán)重依賴SimpleFactory類,只要SimpleFactory類1出問題,系統(tǒng)就進(jìn)入不能工作的狀態(tài),這也是最為致命的1點(diǎn)....
以上的不足將在工廠模式的另外兩種狀態(tài)中得到解決。

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

我們再來定義1個產(chǎn)品接口
  1. public interface Product{} 

1下是實(shí)現(xiàn)了產(chǎn)品接口的產(chǎn)品類
  1. public class Washer implements Product{ 
  2.    public Washer(){ 
  3.        System.out.println("洗衣機(jī)被制造了"); 
  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("空調(diào)被制造了"); 
  14.    } 

接下來,就是工廠方法的核心部份,也就是具體創(chuàng)建產(chǎn)品對象的具體工廠類,
  1. //創(chuàng)建洗衣機(jī)的工廠 
  2. public class CreateWasher implements Factory{ 
  3.     public Product create(){ 
  4.           return new Washer(); 
  5.     } 
  6.  
  7. //創(chuàng)建冰箱的工廠 
  8. public class CreateIcebox implements Factory{ 
  9.     public Product create(){ 
  10.           return new Icebox(); 
  11.     } 
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 精品国产乱码久久久久久图片 | 日韩精品三区 | 91看片免费在线观看 | 亚洲精品第一 | 久艹av| 国产一区免费视频 | 在线日韩精品视频 | 欧美色图在线观看 | 亚洲免费在线视频 | 日本久久中文字幕 | 久久久久国产一区二区 | 亚洲一区二区久久 | 国产在线一区二区三区 | 日韩精品无码一区二区三区 | www.888www看片 | 国内 美女 主播 精品 视频 | 欧美精品成人 | 午夜视频网 | 国产综合一区二区 | 午夜精品一区二区三区视频免费看 | 亚洲精品久久久久久下一站 | 日本成人黄色片 | 九九热精品视频 | 日本一区二区三区视频在线观看 | 日韩精品国产精品 | 久久精品123 | 日韩高清在线 | 亚洲另类欧美日韩 | 国产精品高潮呻吟久久av黑人 | 免费av网站在线 | 91日韩在线 | 亚洲一区在线免费 | 亚洲青涩网 | 精品国产91乱码一区二区三区 | 日本久久精品视频 | 精品一级 | 国产精品区视频 | 综合二区 | 综合久久精品 | 久久久青草婷婷精品综合日韩 | 日韩av综合 |