PM:這次豁出去了!
PM:直接來賣整套套裝了...
PM:也就是轉一次就給你一個指定套裝,但是數值好壞就看個人運氣了
PM:所以目前總共有5套,但是改版後可能會新增2套
我:好的,沒問題
所以這次的需求,是要抽套裝,套裝裡面有頭盔、上衣、褲子、手套、鞋子
所以這5樣套裝的東西是固定的,只是套裝的種類是會變來變去的
如:王朝套裝、帝國套裝、雜七雜八套裝
PM又說了,改版後會在新增兩件套裝,所以之後會在加兩件套裝上去
於是使用創建者模式寫寫看
using System; namespace DesignPattern.BuilderPattern { class Run { static void Main(string[] args) { Director director = new Director(); Bulider bulider = new KingSet(); //獲取王朝套裝 director.setBulider(bulider); director.create(); Console.WriteLine("----------"); bulider = new EmpireSet(); //獲取帝國套裝 director.setBulider(bulider); director.create(); Console.ReadLine(); } //套裝的裝備項目 interface Bulider { //獲得頭盔 void getHat(); //獲得上衣 void getCoat(); //獲得褲子 void getPants(); //獲得手套 void getGloves(); //獲得鞋子 void getShoe(); } //統一由指揮者 class 執行生產步驟 class Director { private Bulider builder; public void setBulider(Bulider builder) { this.builder = builder; } public void create() { this.builder.getHat(); this.builder.getCoat(); this.builder.getPants(); this.builder.getGloves(); this.builder.getShoe(); } } //王朝套裝 class KingSet : Bulider { public void getHat() { Console.WriteLine("獲得王朝套裝-頭盔"); } public void getCoat() { Console.WriteLine("獲得王朝套裝-上衣"); } public void getPants() { Console.WriteLine("獲得王朝套裝-褲子"); } public void getGloves() { Console.WriteLine("獲得王朝套裝-手套"); } public void getShoe() { Console.WriteLine("獲得王朝套裝-鞋子"); } } //帝國套裝 class EmpireSet : Bulider { public void getHat() { Console.WriteLine("獲得帝國套裝-頭盔"); } public void getCoat() { Console.WriteLine("獲得帝國套裝-上衣"); } public void getPants() { Console.WriteLine("獲得帝國套裝-褲子"); } public void getGloves() { Console.WriteLine("獲得帝國套裝-手套"); } public void getShoe() { Console.WriteLine("獲得帝國套裝-鞋子"); } } } }
所以這邊我創建了一個interface Bulider內容就是套裝的項目,這些都是固定的
然後又創建了一個Director類別,負責產生套裝
然後創建王朝套裝(KingSet)的類別繼承Bulider,來實做得到的內容
所以改版後,新增的兩件套裝,我就可以在新增兩個類別來實做新的套裝
這邊也就不會動到之前的套裝的類別
沒有留言:
張貼留言