รุ่นสร้าง
โหมด Builder (แบบ Builder) โดยใช้เสียงข้างมากของวัตถุที่เรียบง่ายในการสร้างขั้นตอนโดยขั้นตอนในวัตถุที่ซับซ้อน ประเภทของรูปแบบการออกแบบนี้เป็นของสร้างสกีซึ่งมีวิธีที่ดีที่สุดในการสร้างวัตถุ
ระดับ Builder เป็นขั้นตอนโดยขั้นตอนในการสร้างวัตถุสุดท้าย ชั้น Builder เป็นอิสระของวัตถุอื่น ๆ
การแนะนำ
เจตนา: ความซับซ้อนสร้างแยกเป็นตัวแทนเพื่อให้การดำเนินการก่อสร้างเดียวกันสามารถสร้างการแสดงที่แตกต่างกัน
เป็นหลักในการแก้ปัญหา: การแก้ปัญหาหลักในระบบซอฟต์แวร์บางครั้งหันหน้าไปทาง "วัตถุที่ซับซ้อน" เพื่อสร้างการทำงานซึ่งมักจะเป็นขั้นตอนวิธีการบางอย่างประกอบด้วยส่วนต่าง ๆ ของย่อยวัตถุเนื่องจากมีการเปลี่ยนแปลงในความต้องการส่วนต่างๆของเรื่องที่ซับซ้อนนี้มักจะเผชิญกับ การเปลี่ยนแปลงที่รุนแรง แต่พวกเขาจะรวมขั้นตอนวิธีการค่อนข้างมีเสถียรภาพ
เมื่อจะใช้มันจะไม่เปลี่ยนแปลงบางส่วนขององค์ประกอบพื้นฐานและชุดดังกล่าวมีการเปลี่ยนแปลงครั้ง
วิธีการแก้ไข: การเปลี่ยนแปลงและไม่เปลี่ยนแปลงแยกออกจากกัน
คีย์รหัส: Builder: สร้างและให้ตัวอย่างผู้อำนวยการ: การบริหารจัดการการพึ่งพาสร้างขึ้นจากอินสแตนซ์
ตัวอย่างการใช้งาน: 1 ให้ไปที่เคเอฟซี, เบอร์เกอร์, โคล่า, มันฝรั่งทอด, ปีกไก่ทอด ฯลฯ เป็นค่าคงที่และองค์ประกอบของมันมีการเปลี่ยนแปลงอย่างต่อเนื่องในการสร้างสิ่งที่เรียกว่า "แพคเกจ".2, JAVA ใน StringBuilder
ข้อดี: 1, ผู้สร้างอิสระและง่ายต่อการขยายตัว2 ง่ายต่อการควบคุมรายละเอียดของความเสี่ยง
ข้อเสีย: 1 ผลิตภัณฑ์จะต้องมีเหมือนกันช่วงที่มี จำกัด2. การเปลี่ยนแปลงภายในที่ซับซ้อนจะมีจำนวนมากของการเรียนการก่อสร้าง
สถานการณ์การใช้งาน: 1, คุณจะต้องสร้างวัตถุที่มีโครงสร้างภายในที่ซับซ้อน2 จะต้องมีการสร้างขึ้นภายในคุณสมบัติวัตถุเองพึ่งพาซึ่งกันและกัน
หมายเหตุ: ความแตกต่างระหว่างรุ่นพืชเป็น: รูปแบบ Builder เป็นกังวลมากขึ้นเกี่ยวกับการสั่งซื้อของการชุมนุมของชิ้นส่วน
การสำนึก
เราคิดว่าเป็นกรณีที่ธุรกิจร้านอาหารฟาสต์ฟู้ซึ่งในแพคเกจที่สามารถเป็นเบอร์เกอร์ทั่วไป (เบอร์เกอร์) และแก้วเย็น (เครื่องดื่มเย็นบริการ) เบอร์เกอร์ (Burger) อาจเป็นเบอร์เกอร์ผัก (Veg เบอร์เกอร์) หรือเบอร์เกอร์ไก่ (ไก่เบอร์เกอร์) พวกเขาถูกห่อในถาดกระดาษ เย็น (เครื่องดื่มเย็น ๆ ) อาจจะเป็น Coca-Cola (โค้ก) หรือเป๊ปซี่ (เป๊ปซี่) พวกเขาจะถูกบรรจุในขวด
เราจะสร้างตัวแทนของรายการอาหาร (เช่นเบอร์เกอร์และเย็น)ของอินเตอร์เฟซรายการและอินเตอร์เฟซการใช้งานคลาสนิติบุคคลรายการและอินเตอร์เฟซและการดำเนินกิจการที่แสดงให้เห็นถึงการบรรจุอาหารอินเตอร์เฟซการบรรจุบรรจุภัณฑ์,ฮัมบูร์กเป็นแพคเกจในถาดกระดาษมีอากาศหนาวเย็น บรรจุในขวด
จากนั้นเราจะสร้างการเรียนอาหาร,ArrayListและอาหารที่จะสร้างความแตกต่างของวัตถุที่ผ่านการรวมกันของMealBuilderกับรายการของรายการBuilderPatternDemo เราแสดงให้เห็นถึงการใช้งานของระดับMealBuilderในการสร้างอาหาร
ขั้นตอนที่ 1
สร้างอินเตอร์เฟซที่รายการอาหารและบรรจุภัณฑ์อาหาร
Item.java
รายการอินเตอร์เฟซที่สาธารณะ { ชื่อ String สาธารณะ (); การบรรจุบรรจุสาธารณะ (); ราคาลอยสาธารณะ (); }
Packing.java
อินเตอร์เฟซที่สาธารณะบรรจุ { แพ็สาธารณะ String (); }
ขั้นตอนที่ 2
บรรจุภัณฑ์สร้างคลาสนิติบุคคลใช้อินเตอร์เฟซ
Wrapper.java
การดำเนินการเรียนสาธารณะ Wrapper บรรจุ { @Override แพ็สาธารณะ String () { กลับ "Wrapper"; } }
Bottle.java
การดำเนินการเรียนสาธารณะขวดบรรจุ { @Override แพ็สาธารณะ String () { กลับ "ขวด"; } }
ขั้นตอนที่ 3
สร้างอินเตอร์เฟซที่ระดับรายการนามธรรมชั้นเรียนให้ฟังก์ชั่นเริ่มต้น
Burger.java
ประชาชนเบอร์เกอร์ระดับนามธรรมดำเนินรายการ { @Override การบรรจุบรรจุสาธารณะ () { กลับ Wrapper ใหม่ (); } @Override สาธารณะราคาลอยนามธรรม (); }
ColdDrink.java
ระดับนามธรรมสาธารณะ ColdDrink ดำเนินรายการ { @Override การบรรจุบรรจุสาธารณะ () { กลับขวดใหม่ (); } @Override สาธารณะราคาลอยนามธรรม (); }
ขั้นตอนที่ 4
การสร้างส่วนขยายของเบอร์เกอร์ชั้นเรียนและนิติบุคคล ColdDrink
VegBurger.java
เรียนสาธารณะ VegBurger ขยาย {เบอร์เกอร์ @Override ราคาลอยสาธารณะ () { กลับ 25.0f; } @Override ชื่อ String สาธารณะ () { กลับ "เบอร์เกอร์ผัก"; } }
ChickenBurger.java
เรียนสาธารณะ ChickenBurger ขยาย {เบอร์เกอร์ @Override ราคาลอยสาธารณะ () { กลับ 50.5f; } @Override ชื่อ String สาธารณะ () { กลับ "เบอร์เกอร์ไก่"; } }
Coke.java
เรียนสาธารณะโค้กขยาย ColdDrink { @Override ราคาลอยสาธารณะ () { กลับ 30.0f; } @Override ชื่อ String สาธารณะ () { กลับ "โค้ก"; } }
Pepsi.java
เป๊ปซี่เรียนสาธารณะขยาย ColdDrink { @Override ราคาลอยสาธารณะ () { กลับ 35.0f; } @Override ชื่อ String สาธารณะ () { กลับ "เป๊ปซี่"; } }
ขั้นตอนที่ 5
สร้างคลาสอาหารกับรายการวัตถุที่กำหนดไว้ข้างต้น
Meal.java
นำเข้า java.util.ArrayList; นำเข้า java.util.List; อาหารคลาสที่สาธารณะ { รายการส่วนตัว <item> รายการ = ArrayList ใหม่ <item> (); โมฆะสาธารณะ addItem (รายการไอเทม) { Items.Add (รายการ); } ลอยสาธารณะ getCost () { ค่าใช้จ่ายลอย = 0.0f; สำหรับ (รายการรายการ: รายการ) { ค่าใช้จ่าย + = item.price (); } กลับค่าใช้จ่าย; } showItems โมฆะสาธารณะ () { สำหรับ (รายการรายการ: รายการ) { ระบบออก ( "รายการ:" + item.name ()); ระบบออก (. "บรรจุ:" + Item.packing () แพ็ค ()); System.out.println ( "ราคา:" + item.price ()); } } }
ขั้นตอนที่ 6
MealBuilder สร้างชั้นที่สร้างจริงรับผิดชอบในการสร้างวัตถุชั้นอาหาร
MealBuilder.java
MealBuilder คลาสที่สาธารณะ { ประชาชนมื้อ prepareVegMeal () { อาหารมื้ออาหาร = ใหม่ (); meal.addItem (VegBurger ใหม่ ()); meal.addItem (ใหม่โค้ก ()); กลับอาหาร; } ประชาชนมื้อ prepareNonVegMeal () { อาหารมื้ออาหาร = ใหม่ (); meal.addItem (ChickenBurger ใหม่ ()); meal.addItem (ใหม่เป๊ปซี่ ()); กลับอาหาร; } }
ขั้นตอนที่ 7
BuiderPatternDemo ใช้ MealBuider แสดงให้เห็นถึงโหมด Builder (แบบ Builder)
BuilderPatternDemo.java
เรียนสาธารณะ BuilderPatternDemo { ประชาชนเป็นโมฆะคง main (String args []) { MealBuilder mealBuilder = MealBuilder ใหม่ (); มื้อ vegMeal = mealBuilder.prepareVegMeal (); System.out.println ( "Veg อาหาร"); vegMeal.showItems (); System.out.println ( "รวมราคาทุน:" + vegMeal.getCost ()); มื้อ nonVegMeal = mealBuilder.prepareNonVegMeal (); System.out.println ( "\ n \ nNon ผักอาหาร"); nonVegMeal.showItems (); System.out.println ( "รวมราคาทุน:" + nonVegMeal.getCost ()); } }
ขั้นตอนที่ 8
ตรวจสอบการส่งออก
Veg อาหาร รายการ: Veg เบอร์เกอร์บรรจุ: ห่อราคา: 25.0 รายการ: โค้กบรรจุ: ขวดราคา: 30.0 ค่าใช้จ่ายรวม: 55.0 Non-Veg อาหาร รายการ: เบอร์เกอร์ไก่, บรรจุ: ห่อราคา: 50.5 รายการ: เป๊ปซี่บรรจุ: ขวดราคา: 35.0 ค่าใช้จ่ายรวม: 85.5