บทความนี้อธิบายกรณีการบริโภค KFC ที่ใช้โดย Java โดยใช้แบบจำลองโรงงานนามธรรม แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
1. คำจำกัดความรูปแบบ
รูปแบบของโรงงานนามธรรมจัดให้มีอินเทอร์เฟซสำหรับการสร้างครอบครัวของวัตถุที่เกี่ยวข้องหรือขึ้นอยู่กับโดยไม่ต้องระบุคลาสการใช้งานคอนกรีต
โมเดลโรงงานนามธรรมช่วยให้ลูกค้าสามารถใช้อินเทอร์เฟซนามธรรมเพื่อสร้างชุดของผลิตภัณฑ์ที่เกี่ยวข้อง คลาสลูกค้าและคลาสโรงงานถูกแยกออกจากกัน เมื่อลูกค้าต้องการผลิตภัณฑ์ใด ๆ พวกเขาจะต้องขอพวกเขาจากโรงงานเท่านั้น ลูกค้าสามารถรับผลิตภัณฑ์ใหม่ได้โดยไม่ต้องแก้ไข
2. ตัวอย่างของแบบจำลอง
1 การวิเคราะห์รูปแบบ
เรายืมฉากของพ่อและลูกชายไปที่ร้าน KFC เพื่อบริโภคเพื่อแสดงรูปแบบนี้ ภาพหน้าจอหลังจากทำการวิเคราะห์นามธรรมมีดังนี้
2 การสร้างแบบจำลองแบบคงที่ของรูปแบบโรงงานนามธรรม
3 ตัวอย่างรหัส
3.1 การจัดตั้งอาหารนามธรรม
อาหารนามธรรม - บทคัดย่อ
แพ็คเกจ com.demo.factory.model;/** * * คลาสฐานอาหาร * * @author maofw * */บทคัดย่อคลาสนามธรรม Abstractbasefood {// ประเภทสตริงป้องกันหมวดหมู่; // ปริมาณที่ได้รับการป้องกันจำนวน int num; // ราคาที่ได้รับการป้องกันราคา; // รวม Public Float TotalPrice () {return this.num * this.price; -อินเทอร์เฟซอาหาร - ifood
แพ็คเกจ com.demo.factory.model;/*** บทคัดย่ออาหารอินเทอร์เฟซ** @author maofw**/อินเทอร์เฟซสาธารณะ ifood {/*** พิมพ์ข้อมูลอาหาร*/void printmesage ();}3.2 สร้างชั้นเรียนพื้นฐานที่เป็นนามธรรมสำหรับอาหารที่แตกต่างกัน
Hamburger Base Class - ฮัมบูร์ก
แพ็คเกจ com.demo.factory.model; /** * คลาสฐานฮัมบูร์ก * @author maofw * * /บทคัดย่อระดับสาธารณะ Hamburg ขยายบทคัดย่อ abstractbasefood ใช้ ifood {public void printmesage () {system.out.println ("-" + this.kind + "hamburger ", /t ทั้งหมด:" + this.totalprice ()); -ปีกไก่
แพ็คเกจ com.demo.factory.model; /** * ปีกไก่คลาสฐาน * @author maofw * * /บทคัดย่อระดับประชาชนไก่ตัวกว้างขยายตัว Abstractbasefood ใช้งาน ifood {public void printmesage () {system.out.println ("-" + this.kind + " ", /t ทั้งหมด:" + this.totalprice ()); -ชั้นฐานเฟรนช์ฟรายส์ - Frenchfries
แพ็คเกจ com.demo.factory.model; /** * คลาสเฟรนช์ฟรายชั้นพื้นฐาน * * @author maofw * * /บทคัดย่อระดับสาธารณะ Frenchfries ขยายบทคัดย่อ ambstractbasefood ใช้ ifood {public void printmesage () {system.out.println ("-" ", /t ทั้งหมด:" + this.totalprice ()); -ชั้นฐานเครื่องดื่ม - เครื่องดื่ม
แพ็คเกจ com.demo.factory.model; /** * คลาสพื้นฐานของเครื่องดื่ม * @author maofw * * /public บทคัดย่อคลาสเครื่องดื่มขยายบทคัดย่อ abstractbasefood ดำเนินการ ifood {public void printmesage () {system.out.println ("-" + this.kind + "beverage /t ทั้งหมด: " + this.totalprice ()); -3.3 สร้างอาหารเฉพาะ
เบอร์เกอร์ขาไก่เผ็ด - Chinahanburm
แพ็คเกจ com.demo.factory.model.kfc; นำเข้า com.demo.factory.model.hamburg;/** * เบอร์เกอร์เนื้อไก่เผ็ดสไตล์จีน * * @author maofw * */ชั้นเรียนสาธารณะ this.kind = "เผ็ด"; this.price = 14.0f; this.num = num; -
ปีกไก่ออร์ลีนส์ - Chinachickenwings
แพ็คเกจ com.demo.factory.model.kfc; นำเข้า com.demo.factory.model.chickenwings;/** * คลาสการใช้งานปีกไก่ * * @author maofw * */ชั้นเรียนสาธารณะ Chinachickenwings ขยายไก่ this.price = 2.5f; this.num = num; -
มันฝรั่งทอด - Chinafrenchfries
แพ็คเกจ com.demo.factory.model.kfc; นำเข้า com.demo.factory.model.frenchfries;/** * ชั้นเรียนการใช้งานเฟรนช์ฟรายส์ * * * @author maofw */ชั้นเรียนสาธารณะ Chinafrenchfries ขยาย Frenchfries this.price = 8.0f; this.num = num; -
โค้ก - chinabeverage
แพ็คเกจ com.demo.factory.model.kfc; นำเข้า com.demo.factory.model.beverage;/** * คลาสการใช้งานเครื่องดื่ม * * @author maofw * */ชั้นเรียนสาธารณะ Chinabverage ขยายเครื่องดื่ม this.price = 7.0f; this.num = num; -
3.4 สร้างโรงงาน
สร้างโรงงานนามธรรม KFC - IKFCFactory ผลิตอาหารนามธรรม
แพ็คเกจ com.demo.factory.itf; นำเข้า com.demo.factory.model.beverage; นำเข้า com.demo.factory.model.chickenwings; นำเข้า com.demo.factory.model.frenchfries; นำเข้า com.demo.factory.model.hamburg; ikfcfactory {// ผลิต Hamburger สาธารณะฮัมบูร์ก Createhamburg (int num); // ผลิต Fries Public Frenchfries Createfrenchfries (int num); // ผลิตปีกไก่ลูกนกไก่ Createchickenwings (int num); // ผลิตเครื่องดื่มเครื่องดื่มสาธารณะ CreateBeverage (int num);}สร้างโรงงาน KFC เฉพาะ - Chinakfcfactory เพื่อผลิตอาหารเฉพาะ
แพ็คเกจ com.demo.factory.itf; นำเข้า com.demo.factory.model.beverage; นำเข้า com.demo.factory.model.chickenwings; นำเข้า com.demo.factory.model.frenchfries; นำเข้า com.demo.factory.model.hamburg; com.demo.factory.model.kfc.chinachickenwings; นำเข้า com.demo.factory.model.kfc.chinafrenchfries; นำเข้า com.demo.factory.model.kfc.chinahanburm; Chinabeverage (NUM); } // ผลิต Orleans Orleans ปีกไก่คั่วไก่ Public Createchickenwings (int num) {ส่งคืน Chinachickenwings ใหม่ (NUM); } // ผลิต frenchfries createfrenchfries (int num) {ส่งคืน chinafrenchfries ใหม่ (num); } // ผลิตเบอร์เกอร์ไก่เผ็ดเบอร์เกอร์สาธารณะฮัมบูร์ก Createhamburg (int num) {ส่งคืน Chinahanburm ใหม่ (NUM); -3.5 สร้างคลาสลูกค้า - ลูกค้า
แพ็คเกจ com.demo.factory.custom; นำเข้า com.demo.factory.itf.ikfcfactory; นำเข้า com.demo.factory.model.beverage; นำเข้า com.demo.factory.model.chickenwings; นำเข้า com.demo.factory.model.frenchfries; @author maofw * */ลูกค้าชั้นเรียนสาธารณะ {// บทคัดย่อโรงงานส่วนตัว ikfcfactory kfcfactory; // วิธีตัวสร้างผ่านโรงงานนามธรรมเป็นพารามิเตอร์เข้าสู่ลูกค้าสาธารณะ (ikfcfactory kfcfactory) {this.kfcfactory = kfcfactory; } / *** สั่งอาหาร* // // สั่งซื้อไก่เผ็ดเบอร์เกอร์ Public Float Public Orderhamburg (int num) {// รับไก่เผ็ดเบอร์เกอร์ Hamburg Hamburg = kfcfactory.createhamburg (NUM); // ข้อมูลการสั่งซื้อส่งออก hamburg.printmesage (); // ส่งคืนราคาผลตอบแทนรวม Hamburg.totalPrice (); } // คำสั่งซื้อ Orleans Roast ไก่ปีกสาธารณะลอยตัว orderchickenwings (int num) {// รับ Orleans Roast Chicken Wings ไก่ ickenwings = kfcfactory.createchickenwings (NUM); // ข้อมูลการสั่งซื้อเอาท์พุท Chickenwings.printmesage (); // คืนราคาผลตอบแทนรวม Chickenwings.totalPrice (); } // สั่งซื้อ Fries Float Public OrderFrenchFries (int num) {// รับ FRENSHFRIES FRENCHFRIES = KFCFACTORY.CreateFrenchFries (NUM); // ข้อมูลการสั่งซื้อออก FrenchFries.printmesage (); // คืนราคาผลตอบแทนรวม frenchfries.totalprice (); } // สั่งซื้อโค้ก public float orderbeverage (int num) {// รับโค้กเครื่องดื่มเครื่องดื่ม = kfcfactory.createBeverage (NUM); // ข้อมูลการสั่งซื้อข้อมูลการสั่งซื้อเครื่องดื่ม PRINTMESAGE (); // ส่งคืนเครื่องดื่มผลตอบแทนราคารวม TotalPrice (); -3.6 การแสดงเรื่องราว
แพ็คเกจ com.demo.factory; นำเข้า Java.lang.Management.ManagementFactory; นำเข้า java.net.httpurlconnection; นำเข้า java.net.url; นำเข้า java.net.urlconnection; นำเข้า java.net.urlconnection; java.sql.preparedStatement; นำเข้า java.sql.sqlexception; นำเข้า java.text.numberformat; นำเข้า java.util.arrays; นำเข้า java.util.calendar; นำเข้า java.util.resourceBundle; com.demo.factory.itf.chinakfcfactory; นำเข้า com.demo.factory.itf.ikfcfactory; คลาสสาธารณะ MainApp { / ** * วิธีการใช้งานหลัก * * @param args * / โมฆะสาธารณะคงที่ (สตริง [] args) { / ** * Chinakfcfactory (); / *** พ่อและลูกชายเดินเข้าไปใน KFC เพื่อเตรียมการสั่งซื้อ*/ ลูกค้าลูกค้า = ลูกค้าใหม่ (KFCFactory); / *** เริ่มสั่งซื้อ* // // เบอร์เกอร์ขาไก่เผ็ดลอย Hamhurgmoney = customer.orderhamburg (1); // สี่ออร์ลีนส์ปีกไก่ย่างลอยไก่งอมนี่ย์ = customer.orderchickenwings (4); // แพ็คของมันฝรั่งทอดลอย frenchfriesmoney = customer.orderfrenchfries (1); // สองถ้วยของ Cola float beveragemoney = customer.orderBeverage (2); System.out.println ("Total:" + (Hamhurgmoney + Chickenwingsmoney + FrenchFriesmoney + Beveragemoney)); -ผลการทำงาน:
-เบอร์เกอร์-spicy, ราคาต่อหน่วย: 14.0, ปริมาณ: 1, ทั้งหมด: 14.0
-ปีกไก่ปรุงแต่งรสชาติ, ราคาหน่วย: 2.5, ปริมาณ: 4, ทั้งหมด: 10.0
-Flavour Fries, ราคาต่อหน่วย: 8.0, ปริมาณ: 1, ทั้งหมด: 8.0
-Cola Drink, ราคาต่อหน่วย: 7.0, ปริมาณ: 2, ทั้งหมด: 14.0
รวม: 46.0
3. หลักการออกแบบของรุ่นนี้
1 ใช้การรวมวัตถุมากขึ้นและการสืบทอดน้อยลง
2. สำหรับการเขียนโปรแกรมนามธรรมไม่ใช่สำหรับการเขียนโปรแกรมการใช้งาน
3 วัตถุผลิตภัณฑ์ถูกสร้างขึ้นด้วยวิธีการสัมผัสจากโรงงาน
4. ใช้โอกาส
1. สร้างครอบครัวผลิตภัณฑ์และใช้ผลิตภัณฑ์ที่เกี่ยวข้องร่วมกัน
2 ต้องการให้ห้องสมุดผลิตภัณฑ์และต้องการแสดงส่วนต่อประสานแทนการใช้งานเท่านั้น
3 เมื่อใช้โรงงานร่วมกัน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน