国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java設(shè)計(jì)模式之簡(jiǎn)單工廠模式

2019-11-14 09:34:59
字體:
供稿:網(wǎng)友

簡(jiǎn)單工廠模式(Simple Factory Pattern)又叫靜態(tài)工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。當(dāng)你需要什么,只需要傳入一個(gè)正確的參數(shù),就可以獲取你所需要的對(duì)象,而無須知道其創(chuàng)建細(xì)節(jié)。

簡(jiǎn)單工廠模式其實(shí)不是一個(gè)設(shè)計(jì)模式,反而比較像是一種編程習(xí)慣。但由于經(jīng)常被使用,所以我們先來學(xué)習(xí)。

用簡(jiǎn)單工廠模式寫的烤魚店實(shí)例類圖如下: 烤魚店實(shí)例類圖 客人通過KaoYu類的orderFish()方法來點(diǎn)單,SimpleFishFactory類的orderFish()負(fù)責(zé)創(chuàng)建不同烤魚類型,F(xiàn)ish是烤魚父類,CaoYu,NianYu,JiYu,LuYu是具體實(shí)現(xiàn)。

Fish類代碼實(shí)現(xiàn):

public class Fish { String name = "Unknow name"; public String getname(){ return name; }}

CaoYu類代碼實(shí)現(xiàn):

public class CaoYu extends Fish{ public CaoYu(){ name = "草魚"; System.out.NianYu類代碼實(shí)現(xiàn):

public class NianYu extends Fish{ public NianYu(){ name = "鯰魚"; System.out.println("烤"+name); }}

JiYu類代碼實(shí)現(xiàn):

public class JiYu extends Fish{ public JiYu(){ name = "鯽魚"; System.out.println("烤"+name); }}

LuYu類代碼實(shí)現(xiàn):

public class LuYu extends Fish{ public LuYu(){ name = "鱸魚"; System.out.println("烤"+name); }}

SimpleFishFactory類代碼實(shí)現(xiàn):

public class SimpleFishFactory { public Fish createFish(String type){ if (type.equals("CaoYu")) { return new CaoYu(); }else if (type.equals("NianYu")) { return new NianYu(); }else if (type.equals("JiYu")) { return new JiYu(); }else if (type.equals("LuYu")) { return new LuYu(); } return null; }}

createFish方法根據(jù)傳進(jìn)來的不同參數(shù),返回一個(gè)對(duì)應(yīng)的對(duì)象。

KaoYu類代碼實(shí)現(xiàn):

public class KaoYu { SimpleFishFactory factory; public KaoYu(SimpleFishFactory factory){ this.factory = factory; } public Fish orderFish(String type){ Fish fish; fish = factory.createFish(type); System.out.println("我是一條烤"+fish.getname()); return fish; }}

KaoYu類傳進(jìn)來一個(gè)SimpleFishFactory對(duì)象,然后orderFish根據(jù)type來返回一個(gè)對(duì)應(yīng)的對(duì)象。

測(cè)試類KaoYuTest代碼實(shí)現(xiàn):

public class KaoYuTest { public static void main(String[] args){ SimpleFishFactory factory = new SimpleFishFactory(); KaoYu kaoYu = new KaoYu(factory); kaoYu.orderFish("JiYu"); }}

執(zhí)行結(jié)果:

烤鯽魚我是一條烤鯽魚
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊宁市| 兰州市| 枣强县| 锦州市| 雅江县| 安龙县| 临湘市| 广德县| 光山县| 兴海县| 承德市| 五峰| 通海县| 雷州市| 登封市| 修水县| 辽阳县| 临湘市| 榆中县| 交口县| 遂昌县| 惠来县| 凤山市| 驻马店市| 得荣县| 元江| 平定县| 阿图什市| 尚志市| 察隅县| 庆阳市| 大方县| 巴彦县| 石林| 德格县| 青龙| 汉川市| 玉田县| 馆陶县| 泊头市| 榆林市|