盤置青梅,一樽煮酒,二人對坐,開懷暢飲。操以手指玄德,然後自指曰:「天下英雄,唯使君與操耳」。玄德乃以:「一震之威,乃至於此!」應對。乙個長歌當嘯,豪氣沖天,指點群雄;乙個寄人籬下,一味謙恭,裝孬不折本。此乃曹劉經典的煮酒論英雄。下面有請我們另外兩位英雄——鳴人和比爾.雷澤,這兩個二貨一見面就唾沫橫飛的要大幹一場,最終上演了一場不倫不類的模式論英雄的忍術vs科技之戰。
這裡不再畫建造者模式、抽象工廠模式和方法模式的uml圖了,如需要了解的可以去看一下小y前面的文章建造者模式、工廠方法模式、抽象工廠模式
①在工廠方法模式的加持下,直接產生了手持螺旋丸和具備仙人能力的基數龐大的鳴人隊伍。
②在建造者模式的控制下,乙個個比爾按照預定的順序生產出各個部分並組裝起來。
1.工廠方法模式建造鳴人
①鳴人介面
public inte***ce mingren
②手持螺旋丸的鳴人
public class mingrenofspiral implements mingren
}
③仙人模式的鳴人
public class mingrenoffairy implements mingren
}
④抽象鳴人製造工廠
public abstract class abstractmingrenfactory
⑤鳴人製造工廠
public class mingrenfactory extends abstractmingrenfactory catch (instantiationexception e) catch (illegalacces***ception e) catch (classnotfoundexception e)
return (t) mingren;}}
⑥生產鳴人
public class client
}
鳴人製造工廠能夠源源不斷地生產出手持螺旋丸和進入仙人模式的鳴人,工廠方法模式主要的目的是能夠直接產生乙個新的鳴人,具體是手持螺旋丸還是仙人模式的鳴人,則由客戶端決定。也就是說具體怎麼生產、怎麼組裝,這不是工廠方法模式考慮的,工廠方法模式關注的是乙個產品的整體。2.建造法模式建造比爾雷澤
①生產乙個比爾需要的部分,即產品
public class bizzer
public void setbody(string body)
public string getcigar()
public void setcigar(string cigar)
public string getarms()
public void setarms(string arms)
}
比爾雷雷澤簡化為三個部分:身體、雪茄、**。②抽象建造者
public abstract class builder
//構建比爾的雪茄
public void setcigar(string cigar)
//構建比爾的**
public void setarms(string arms)
//得到完整的比爾
public abstract bizzer getbizzer();
}
比爾的組成部分上面都已經知道了,具體怎麼組裝就由實現類決定。③裝備散彈槍的比爾
public class bizzeronebuilder extends builder
}
④裝備加特林的比爾
public class bizzertwobuilder extends builder
}
上面兩個具體的建造者,它們都關注了各個部分,它們的主要目的是通過不同的部件,不同的裝配產生不同的複雜物件,最主要的是關心產品的構建順序。⑤導演類
public class director
public static bizzer gettwobizzer()
}
⑥生產比爾雷澤
public class client
}
3.兩者的共同點和區別
共同點
工廠方法模式和建造者模式都屬於建立類模式,都是用來建立物件。
區別
忍術vs科技第一戰比爾雷澤佔了明顯的優勢,在比拼過程中鳴人的優勢是可以快速生產出基數龐大的鳴人群,對比爾進行數量上的壓制;但是比爾這貨優勢在於注重組裝的細節,每個部分都精細化生產,戰鬥力也是不可比擬的,加上強**的加持,鳴人大軍的正在節節敗退。鳴人怎麼說都是一代梟雄,怎會沒有一兩個壓箱底的絕招呢,只見他口念咒語、手結手印,更加龐大的加強版的鳴人軍蜂擁而至,重新形成了相抗衡的局面。
1.鳴人的絕招-抽象工廠模式
按照抽象工廠模式,先定義乙個鳴人介面,然後仙人模式的鳴人和九喇嘛模式的鳴人都實現鳴人介面,我們從產品等級和產品族去分析,仙人模式和九喇嘛模式屬於同乙個產品等級(有n個產品等級就應該有n個實現工廠),仙人模式和九喇嘛模式下面又可以會螺旋丸的和會鳴人連彈的(n個產品族,在抽象工廠類中就要有n個建立方法)。
①鳴人介面
public inte***ce mingren
②仙人模式的會連彈的鳴人
public class fairymodeofmingrenbomb implements mingren
}
③仙人模式的會旋螺丸的鳴人
public class fairymodeofmingrenspiral implements mingren
}
④九喇嘛模式的會連彈的鳴人
public class ninelamaofmingrenbomb implements mingren
}
⑤九喇嘛模式的會旋螺丸的鳴人
public class ninelamaofmingrenspiral implements mingren
}
⑦抽象工廠
public inte***ce mingrenfactory
⑧仙人模式鳴人工廠
public class fairymodemingrenfactory implements mingrenfactory
@override
public mingren createmingrenspiral()
}
⑨九喇嘛模式鳴人工廠
public class ninelamamingrenfactory implements mingrenfactory
@override
public mingren createmingrenspiral()
}
⑩開始生產鳴人
public class client
}
抽象工廠模式頁注重完整性,乙個產品一旦找到乙個工廠生產,那就會生產出乙個固定的產品,這樣子鳴人的加強版大軍很快就被生產出來了。
2.抽象工廠和建造者模式的區別工廠建立一種產品,抽象工廠建立的是一組產品,是乙個產品系列。這裡要注意的是「系列」的意思,也就是說,抽象工廠建立出的一組產品是成套的。
當有乙個介面可以有多種實現的時候,可以考慮使用工廠方法來建立例項。
當有一組介面可以有多種實現方案的時候,可以考慮使用抽象工廠建立例項組。
設計模式系列之鳴人VS比爾 雷澤
盤置青梅,一樽煮酒,二人對坐,開懷暢飲。操以手指玄德,然後自指曰 天下英雄,唯使君與操耳 玄德乃以 一震之威,乃至於此!應對。乙個長歌當嘯,豪氣沖天,指點群雄 乙個寄人籬下,一味謙恭,裝孬不折本。此乃曹劉經典的煮酒論英雄。下面有請我們另外兩位英雄 鳴人和比爾.雷澤,這兩個二貨一見面就唾沫橫飛的要大幹...
設計模式系列之 策略模式
一 策略模式的概念 策略模式定義 定義一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換。使用的場景 角色介紹 二 案列實現 小y最近在玩比較有情懷的經典遊戲魂斗羅.歸來,看著熟悉的場景,心裡感慨萬分,以前只是想著怎麼樣才能開掛式地打爆機,現在玩起來更多的是回味經典和享受運用不同的策略闖過不...
設計模式系列之 裝飾模式
小y 你最喜歡幹什麼?比爾 雷澤 最喜歡衝關打爆大機。小y 比爾,你想對觀眾說些什麼?比爾 雷澤 想挑戰我,隨時奉陪!一顆不夠,給你來三顆!小y 比爾 雷澤作為魂斗羅這麼經典的人物,原來也是乙個粗狂耿直boy呀。為了儲存住他的光輝形象和讓大家更加了解他,小y決定把比爾 雷澤的攻擊技能裝飾一番介紹給大...