Latest web development tutorials
×

设计模式 หลักสูตร

รูปแบบการออกแบบ รู้เบื้องต้นเกี่ยวกับรูปแบบการออกแบบ โหมดโรงงาน แบบโรงงานย่อ รูปแบบเดี่ยว รุ่นสร้าง รุ่นต้นแบบ อะแดปเตอร์รุ่น สะพานโหมด รูปแบบตัวกรอง โหมดการทำงานร่วมกัน มัณฑนากร รูปแบบซุ้ม ฟลายเวท โหมดพร็อกซี่ ห่วงโซ่ของรูปแบบความรับผิดชอบ โหมดคำสั่ง รูปแบบล่าม โหมดซ้ำแล้วซ้ำอีก รูปแบบที่เป็นสื่อกลาง รูปแบบของที่ระลึก รูปแบบการสังเกตการณ์ รูปแบบของรัฐ null Object Model โหมดกลยุทธ์ โหมดแม่แบบ รูปแบบของผู้เข้าชม MVC โหมด โหมดตัวแทน โหมดนิติบุคคลองค์ประกอบ รูปแบบการเข้าถึงข้อมูลของวัตถุ รูปแบบการควบคุมด้านหน้า intercepting รูปแบบตัวกรอง รูปแบบการบริการผู้แทนจำหน่าย วัตถุ Transfer รุ่น

设计模式其他

ทรัพยากรโหมดออกแบบ

รุ่นสร้าง

โหมด Builder (แบบ Builder) โดยใช้เสียงข้างมากของวัตถุที่เรียบง่ายในการสร้างขั้นตอนโดยขั้นตอนในวัตถุที่ซับซ้อน ประเภทของรูปแบบการออกแบบนี้เป็นของสร้างสกีซึ่งมีวิธีที่ดีที่สุดในการสร้างวัตถุ

ระดับ Builder เป็นขั้นตอนโดยขั้นตอนในการสร้างวัตถุสุดท้าย ชั้น Builder เป็นอิสระของวัตถุอื่น ๆ

การแนะนำ

เจตนา: ความซับซ้อนสร้างแยกเป็นตัวแทนเพื่อให้การดำเนินการก่อสร้างเดียวกันสามารถสร้างการแสดงที่แตกต่างกัน

เป็นหลักในการแก้ปัญหา: การแก้ปัญหาหลักในระบบซอฟต์แวร์บางครั้งหันหน้าไปทาง "วัตถุที่ซับซ้อน" เพื่อสร้างการทำงานซึ่งมักจะเป็นขั้นตอนวิธีการบางอย่างประกอบด้วยส่วนต่าง ๆ ของย่อยวัตถุเนื่องจากมีการเปลี่ยนแปลงในความต้องการส่วนต่างๆของเรื่องที่ซับซ้อนนี้มักจะเผชิญกับ การเปลี่ยนแปลงที่รุนแรง แต่พวกเขาจะรวมขั้นตอนวิธีการค่อนข้างมีเสถียรภาพ

เมื่อจะใช้มันจะไม่เปลี่ยนแปลงบางส่วนขององค์ประกอบพื้นฐานและชุดดังกล่าวมีการเปลี่ยนแปลงครั้ง

วิธีการแก้ไข: การเปลี่ยนแปลงและไม่เปลี่ยนแปลงแยกออกจากกัน

คีย์รหัส: Builder: สร้างและให้ตัวอย่างผู้อำนวยการ: การบริหารจัดการการพึ่งพาสร้างขึ้นจากอินสแตนซ์

ตัวอย่างการใช้งาน: 1 ให้ไปที่เคเอฟซี, เบอร์เกอร์, โคล่า, มันฝรั่งทอด, ปีกไก่ทอด ฯลฯ เป็นค่าคงที่และองค์ประกอบของมันมีการเปลี่ยนแปลงอย่างต่อเนื่องในการสร้างสิ่งที่เรียกว่า "แพคเกจ".2, JAVA ใน StringBuilder

ข้อดี: 1, ผู้สร้างอิสระและง่ายต่อการขยายตัว2 ง่ายต่อการควบคุมรายละเอียดของความเสี่ยง

ข้อเสีย: 1 ผลิตภัณฑ์จะต้องมีเหมือนกันช่วงที่มี จำกัด2. การเปลี่ยนแปลงภายในที่ซับซ้อนจะมีจำนวนมากของการเรียนการก่อสร้าง

สถานการณ์การใช้งาน: 1, คุณจะต้องสร้างวัตถุที่มีโครงสร้างภายในที่ซับซ้อน2 จะต้องมีการสร้างขึ้นภายในคุณสมบัติวัตถุเองพึ่งพาซึ่งกันและกัน

หมายเหตุ: ความแตกต่างระหว่างรุ่นพืชเป็น: รูปแบบ Builder เป็นกังวลมากขึ้นเกี่ยวกับการสั่งซื้อของการชุมนุมของชิ้นส่วน

การสำนึก

เราคิดว่าเป็นกรณีที่ธุรกิจร้านอาหารฟาสต์ฟู้ซึ่งในแพคเกจที่สามารถเป็นเบอร์เกอร์ทั่วไป (เบอร์เกอร์) และแก้วเย็น (เครื่องดื่มเย็นบริการ) เบอร์เกอร์ (Burger) อาจเป็นเบอร์เกอร์ผัก (Veg เบอร์เกอร์) หรือเบอร์เกอร์ไก่ (ไก่เบอร์เกอร์) พวกเขาถูกห่อในถาดกระดาษ เย็น (เครื่องดื่มเย็น ๆ ) อาจจะเป็น Coca-Cola (โค้ก) หรือเป๊ปซี่ (เป๊ปซี่) พวกเขาจะถูกบรรจุในขวด

เราจะสร้างตัวแทนของรายการอาหาร (เช่นเบอร์เกอร์และเย็น)ของอินเตอร์เฟซรายการและอินเตอร์เฟซการใช้งานคลาสนิติบุคคลรายการและอินเตอร์เฟซและการดำเนินกิจการที่แสดงให้เห็นถึงการบรรจุอาหารอินเตอร์เฟซการบรรจุบรรจุภัณฑ์,ฮัมบูร์กเป็นแพคเกจในถาดกระดาษมีอากาศหนาวเย็น บรรจุในขวด

จากนั้นเราจะสร้างการเรียนอาหาร,ArrayListและอาหารที่จะสร้างความแตกต่างของวัตถุที่ผ่านการรวมกันของMealBuilderกับรายการของรายการBuilderPatternDemo เราแสดงให้เห็นถึงการใช้งานของระดับMealBuilderในการสร้างอาหาร

รูปแบบการสร้างแผนภาพ UML

ขั้นตอนที่ 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