国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 南阳市| 红桥区| 常州市| 黔西县| 怀来县| 陵川县| 类乌齐县| 贡觉县| 九龙县| 长岛县| 拉孜县| 黄大仙区| 会泽县| 铜川市| 鄢陵县| 瑞金市| 阜新| 永顺县| 岳西县| 嵊州市| 克什克腾旗| 永济市| 商河县| 紫金县| 牟定县| 汉沽区| 宁夏| 珠海市| 永昌县| 南华县| 临颍县| 彰化县| 昌都县| 安远县| 延安市| 文水县| 万载县| 淄博市| 金湖县| 游戏| 墨玉县|