女?huà)z補(bǔ)天的故事大家都聽(tīng)說(shuō)過(guò)吧祸轮,今不說(shuō)這個(gè)姑隅,說(shuō)女?huà)z創(chuàng)造人的故事,可不是“造人” 的工作倔撞,這個(gè)詞被現(xiàn)代人濫用了。這個(gè)故事是說(shuō)慕趴,女?huà)z在補(bǔ)了后痪蝇,下到凡間一看,哇塞冕房, 風(fēng)景優(yōu)美了躏啰,空是湛藍(lán)的,水是清澈的耙册,空氣是清新的给僵,美麗了,然后就待時(shí)間長(zhǎng)了 就有點(diǎn)寂寞了详拙,沒(méi)有動(dòng)物帝际,這些看的到都是靜態(tài)的東西呀,怎么辦饶辙?
別忘了是神仙呀蹲诀,沒(méi)有辦不到的事情,于是女?huà)z就架起了八卦爐(技術(shù)術(shù)語(yǔ):建立工廠) 開(kāi)始創(chuàng)建人弃揽,具體過(guò)程是這樣的:先是泥巴捏脯爪,然后放八卦爐里烤,再扔到地上成長(zhǎng)矿微,但是 以外總是會(huì)產(chǎn)生的:
第一次烤泥人痕慢,茲茲茲茲,感覺(jué)應(yīng)該熟了涌矢,往地上一扔掖举,biu~,一個(gè)白人誕生了娜庇,沒(méi) 烤熟拇泛!
第二次烤泥人,茲茲茲茲茲茲茲茲~~思灌,上次都沒(méi)烤熟俺叭,這次多烤會(huì)兒,往地上一扔泰偿,嘿熄守, 熟過(guò)頭了,黑人哪!
第三次烤泥人裕照,茲茲茲~攒发,一邊烤一邊看著,嘿好了晋南,成了惠猿,就優(yōu)品,黃色人種负间! 那這個(gè)過(guò)程我們就用程序來(lái)表現(xiàn):
首先定義一個(gè)人類(lèi)的總稱(chēng):
public interface Human {
//首先定義什么是人類(lèi)
//人是愉快的偶妖,會(huì)笑的,本來(lái)是想用smile表示政溃,想了一下laugh更合適趾访,好長(zhǎng)時(shí)間 沒(méi)有大笑了;
public void laugh();
//人類(lèi)還會(huì)哭董虱,代表痛苦
public void cry();
//人類(lèi)會(huì)說(shuō)話
public void talk();
}
然后是具體的人種
public class WhiteHuman implements Human {
@Override
public void laugh() {
System.out.println("白色人種會(huì)大笑扼鞋,侵略的笑聲");
}
@Override
public void cry() {
System.out.println("白色人種會(huì)哭");
}
@Override
public void talk() {
System.out.println("白色人種會(huì)說(shuō)話,一般都是但是單字節(jié)愤诱!");
}
}
public class BlackHuman implements Human{
@Override
public void laugh() {
System.out.println("黑人會(huì)笑");
}
@Override
public void cry() {
System.out.println("黑人會(huì)哭");
}
@Override
public void talk() {
System.out.println("黑人可以說(shuō)話云头,一般人聽(tīng)不懂");
}
}
public class YellowHuman implements Human {
@Override
public void laugh() {
System.out.println("黃色人種會(huì)大笑,幸福呀淫半!");
}
@Override
public void cry() {
System.out.println("黃色人種會(huì)哭");
}
@Override
public void talk() {
System.out.println("黃色人種會(huì)說(shuō)話盘寡,一般說(shuō)的都是雙字節(jié)");
}
}
到這里,人種也定義完畢了撮慨,接下來(lái)該把生成人們的八卦爐造出來(lái)了:
public class HumanFactory {
//定義一個(gè)烤箱竿痰,泥巴塞進(jìn)去,人就出來(lái)砌溺,這個(gè)先進(jìn)了
public static Human createHuman(Class c){
//定義一個(gè)類(lèi)型的人類(lèi)
Human human=null;
try {
human = (Human)Class.forName(c.getName()).newInstance(); //產(chǎn)生一個(gè)人種
} catch (InstantiationException e) {//你要是不說(shuō)個(gè)人種顏色的話影涉,沒(méi)法 烤,要白的黑规伐,你說(shuō)話了才好烤
System.out.println("必須指定人種的顏色");
} catch (IllegalAccessException e) { //一定定義的人種有問(wèn)題蟹倾,那就烤 不出來(lái)了,這是...
System.out.println("人種定義錯(cuò)誤猖闪!");
} catch (ClassNotFoundException e) { //你隨便說(shuō)個(gè)人種鲜棠,我到哪里給你 制造去?培慌!
System.out.println("混蛋豁陆,你指定的人種找不到!");
}
return human;
}
}
終于到我們的女?huà)z了:
public class NvWa {
public static void main(String[] args) {
//女?huà)z第一次造人吵护,試驗(yàn)性質(zhì)盒音,少造點(diǎn)表鳍,火候不足,缺陷產(chǎn)品
System.out.println("------------造出的第一批人是這樣的:白人-----------------");
Human whiteHuman = HumanFactory.createHuman(WhiteHuman.class);
whiteHuman.cry();
whiteHuman.laugh();
whiteHuman.talk();
//女?huà)z第二次造人祥诽,火候加足點(diǎn)譬圣,然后又出了個(gè)次品,黑人
System.out.println("\n\n------------造出的第二批人是這樣的:黑人-----------------");
Human blackHuman = HumanFactory.createHuman(BlackHuman.class);
blackHuman.cry();
blackHuman.laugh();
blackHuman.talk();
//第三批人了雄坪,這次火候掌握的正好厘熟,黃色人種(不寫(xiě)黃人,免得引起歧義)维哈,備注: RB人不屬于此列
System.out.println("\n\n------------造出的第三批人是這樣的:黃色人種-----------------");
Human yellowHuman = HumanFactory.createHuman(YellowHuman.class);
yellowHuman.cry();
yellowHuman.laugh();
yellowHuman.talk();
}
}
上述就是簡(jiǎn)單工廠方法模式绳姨,它并不是設(shè)計(jì)模式中的一種。
接下來(lái)是工廠模式:
白人笨农,黑人,黃種人都在一個(gè)工廠中制造出來(lái)帖渠,這樣造出來(lái)的三色人種都在一起谒亦,那么造出來(lái)以后還要進(jìn)行區(qū)分歸類(lèi),然后才能把他們送往歐亞非三大陸空郊,太麻煩了份招。
于是我們需要重新造三個(gè)爐子一種爐子生產(chǎn)一個(gè)人種,都仿照這個(gè)爐子的模子去做:
首先把人類(lèi)工廠的模型提取出來(lái)(即改變上面的HumanFactory 類(lèi)為一個(gè)接口):
public interface HumanFactory {
//定義一個(gè)烤箱狞甚,泥巴塞進(jìn)去锁摔,人就出來(lái),這個(gè)先進(jìn)了
public Human createHuman();
}
然后是依照這個(gè)模子做的三個(gè)爐子
public class WhiteHuman implements Human {
@Override
public void laugh() {
System.out.println("白色人種會(huì)大笑哼审,侵略的笑聲");
}
@Override
public void cry() {
System.out.println("白色人種會(huì)哭");
}
@Override
public void talk() {
System.out.println("白色人種會(huì)說(shuō)話谐腰,一般都是但是單字節(jié)!");
}
}
public class BlackHuman implements Human{
@Override
public void laugh() {
System.out.println("黑人會(huì)笑");
}
@Override
public void cry() {
System.out.println("黑人會(huì)哭");
}
@Override
public void talk() {
System.out.println("黑人可以說(shuō)話涩盾,一般人聽(tīng)不懂");
}
}
public class YellowHumanFactory implements HumanFactory {
@Override
public Human createHuman() {
return new YellowHuman();
}
}
三個(gè)爐子也造好了十气,女?huà)z可以用新?tīng)t子來(lái)造人啦!