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

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

設(shè)計模式――簡單工廠模式

來源:程序員人生   發(fā)布時間:2015-03-28 08:34:33 閱讀次數(shù):3434次

場景設(shè)置

我想養(yǎng)1些小動物,把他們?nèi)︷B(yǎng)在1起看著他們長大,我選擇貓,狗,羊,雞這4種動物。

1般思想,不過建立4個動物類,實例化便可,以下:

class Dog{ public void shout(){ System.out.prinltn("dog shout"); } } class Cat{ public void shout(){ System.out.prinltn("cat shout"); } } class Chicken{ public void shout(){ System.out.prinltn("chicken shout"); } } class Goat{ public void shout(){ System.out.prinltn("goat shout"); } } public static void main(String[] args){ Dog dog = new Dog(); Cat cat = new Cat(); Goat goat = new Goat(); Chicken chicken = new Chicken(); }

如上面這個寫法,4個動物已很麻煩,在客戶端main中要進(jìn)行4次實例化,如果我開個動物園,實例化的語句怎樣辦呢?總不能有多少動物就寫多少動物吧。如果我圈養(yǎng)10幾只動物,每天豢養(yǎng)他們,毫無疑問上述的客戶端會變得雜亂不堪。
這樣就引出了簡單工廠模式。

interface Animale{ public abstract void shout(); } class Goat implements Animale{ @Override public void shout() { System.out.println("goat shout"); } } class Chicken implements Animale{ @Override public void shout() { System.out.println("chicken shout"); } } class Dog implements Animale{ @Override public void shout() { System.out.println("dog shout"); } } class Cat implements Animale{ @Override public void shout() { System.out.println("cat shout"); } } class AnimalFactory{ public static Animale getAnimale(int kind){ Animale animale = null; switch(kind){ case 0: animale = new Dog(); break; case 1: animale = new Cat(); break; default: animale = null; } return animale; } }

因此客戶端可以這樣處理這么1大群動物:

public static void main(String[] args){ List<Animale> zoo = new ArrayList<Animale>(); for(int i=0;i<4;i++) zoo.add(AnimalFactory.getAnimale(0)); for(int i=0;i<2;i++) zoo.add(AnimalFactory.getAnimale(1)); for(int i=0;i<4;i++) zoo.add(AnimalFactory.getAnimale(2)); for(int i=0;i<2;i++) zoo.add(AnimalFactory.getAnimale(3)); for(Animale animale:zoo){ //animale.... } }

通過簡單工廠模式,我可以圈養(yǎng)大批動物,在開飯的時候可以1起喂食,睡覺的時候可以1起要求睡覺等等。

這就是簡單工廠模式,讓類似的對象來自于同1個抽象的東西,通過工廠類,生產(chǎn)這些對象,而在操作這些對象的時候又可使用它們的父類統(tǒng)1操作。固然,生產(chǎn)甚么樣的對象還是需要客戶端來決定。
不足的地方在于,每增加1個新的物種,都需要修改AnimalFactory這個工廠類,修改switch選擇語句,要解決這個問題,就需要通過抽象工廠來解決了,詳見工廠模式.

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: www.av视频在线 | 最新亚洲精品国自产在线观看 | 成人亚洲国产精品久久 | 免费大片在线观看www | 好吊妞精品 | 欧美精品aaa久久久影院 | 又污又黄又无遮挡的网站国产 | 最新69国产成人精品视频69 | 97婷婷色| 亚洲精品专区 | 亚洲a色| 欧美成人在线观看 | 91久久偷偷做嫩草影院免费 | 最新中文字幕第一页 | 第一福利在线观看永久视频 | 伊人久久大香线蕉75 | 视频一区二区免费 | 中文字幕第页 | 欧美亚洲国产另类 | 性欧美高清 | 中文字幕第一页在线播放 | 欧美一区二 | 小说亚洲 | 在线观看噜噜噜私人影院 | 国产午夜亚洲精品久久www | 伊人不卡 | 婷婷夜夜躁天天躁人人躁 | xxx暴力xxx| 国产精品一区91 | 国产一级做a爱片久久毛片a | 亚洲a视频在线 | 黄色亚洲网站 | 国产亚洲精品线观看77 | 国产在线不卡免费播放 | 一区二区网站 | 久久99中文字幕伊人 | 欧美精品成人久久网站 | 天天做天天爱天天爽综合网 | 亚洲欧美中文字幕 | 伊人伊成久久人综合网777 | 18岁禁在线观看 |