โหมดโรงงานง่าย ๆ
แผนภาพชั้นเรียน
สร้างวัตถุที่สอดคล้องกันด้วยเงื่อนไขผ่านคลาสโรงงาน
// ฟังก์ชั่นทางธุรกิจอินเตอร์เฟสสาธารณะ icalculation {double getResult (double numa, double numb); } คลาสสาธารณะ calcadd ดำเนินการ icalculation {@Override สาธารณะ double getResult (double numa, double numb) {system.out.println ("เพิ่ม"); ส่งคืน numa + numb; }} คลาสสาธารณะ calcsubtract ดำเนินการ icalculation {@Override สาธารณะ double getResult (double numa, double numb) {system.out.println ("การลบ"); ส่งคืน numa - numb; }}/** โหมดโรงงานง่าย ๆ มุ่งเน้นไปที่: การสร้างวัตถุ* สร้างคลาสโรงงานเพื่อสร้างอินสแตนซ์ของบางคลาสที่ใช้อินเทอร์เฟซเดียวกันหรือมีความสัมพันธ์ในการสืบทอด*/คลาสสาธารณะ test4Simple {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// การดำเนินการสตริง = "/" การทำงานของสตริง = "+"; // การดำเนินการสตริง = "-"; // การดำเนินการสตริง = "*"; double numa = 182, numb = 33; icalculation createCalc = calcsimpleFactory.createCalc (การดำเนินการ); ผลลัพธ์สองเท่า = createCalc.getResult (numa, numb); System.out.println (ผลลัพธ์); - ข้อบกพร่องของโรงงานง่าย ๆ : เมื่อโรงงานง่าย ๆ สร้างผลิตภัณฑ์จำเป็นต้องผ่านพารามิเตอร์ที่เกี่ยวข้อง หากผ่านไม่ถูกต้องวัตถุจะไม่สามารถเรียกคืนได้
การปรับปรุง: สร้างหมวดหมู่ผลิตภัณฑ์ที่แตกต่างกันหลายวิธี
คลาสสาธารณะ calcmultiplefactory {public icalculation producedd () {return ใหม่ calcadd (); } icalculation สาธารณะคงที่ผลิต () {ส่งคืน calcsubtract () ใหม่ (); } public icalculation productiPly () {ส่งคืน calcmultiply ใหม่ (); } public public icalculation producedivide () {ส่งคืน calcdivide ใหม่ (); }} คลาสสาธารณะ test4Multiple {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {double numa = 182, numb = 33; icalculation createCalc = calcmultiplefactory.produceadd (); ผลลัพธ์สองเท่า = createCalc.getResult (numa, numb); System.out.println (ผลลัพธ์); createCalc = calcMultiplefactory.producesubtract (); ผลลัพธ์ = createCalc.getResult (numa, numb); System.out.println (ผลลัพธ์); createCalc = calcMultiplefactory.producesubtract (); ผลลัพธ์ = createCalc.getResult (numa, numb); System.out.println (ผลลัพธ์); createCalc = calcMultiplefactory.producemultiply (); ผลลัพธ์ = createCalc.getResult (numa, numb); System.out.println (ผลลัพธ์); createCalc = calcMultiplefactory.productudiVide (); ผลลัพธ์ = createCalc.getResult (numa, numb); System.out.println (ผลลัพธ์); - รูปแบบโรงงานนามธรรม
มีแนวคิดหลายประการในนั้น: โรงงานนามธรรม, โรงงานกายภาพ, ผลิตภัณฑ์นามธรรม, ผลิตภัณฑ์ทางกายภาพที่เป็นนามธรรมโรงงาน: กำหนดวิธีนามธรรมในการสร้างผลิตภัณฑ์ Entity Factory: ผลิตภัณฑ์ที่เฉพาะเจาะจงการสร้างผลิตภัณฑ์นามธรรม: อินเทอร์เฟซหรือผลิตภัณฑ์เอนทิตีฐานพื้นฐาน: ใช้ฟังก์ชั่นเฉพาะหรือไดอะแกรมคลาสที่ได้รับ
// บทคัดย่อผลิตภัณฑ์ 1 อินเทอร์เฟซสาธารณะ iProduct1 {โมฆะสาธารณะแสดง (); } // บทคัดย่อผลิตภัณฑ์ 2 อินเตอร์เฟสสาธารณะ iProduct2 {โมฆะสาธารณะแสดง (); } // เอนทิตีผลิตภัณฑ์ 1 ผลิตภัณฑ์ระดับสาธารณะ 1 ใช้ iProduct1 {โมฆะสาธารณะแสดง () {system.out.println ("ผลิตภัณฑ์ที่สร้างขึ้น 1 ผลิตภัณฑ์"); }} // Entity Product2 Public Class Product2 ใช้งาน iProduct2 {โมฆะสาธารณะแสดง () {System.out.println ("ผลิตภัณฑ์ที่สร้างขึ้นประเภท 2"); }} / * * 1a 1b เป็นของผลิตภัณฑ์ 1 ในโครงสร้างลำดับชั้นของผลิตภัณฑ์เดียวกัน * 2a 2b เป็นของ Product2 * / คลาสสาธารณะ grateproduct1a ขยายผลิตภัณฑ์ 1 {@Override โมฆะสาธารณะแสดง () {super.show (); System.out.println ("นี่อยู่ภายใต้ผลิตภัณฑ์ 1: ผลิตภัณฑ์ A"); }} คลาสสาธารณะ GrateProduct1b ขยายผลิตภัณฑ์ 1 {@Override โมฆะสาธารณะแสดง () {super.show (); System.out.println ("นี่อยู่ภายใต้ผลิตภัณฑ์ 1: ผลิตภัณฑ์ B"); }} คลาสสาธารณะ GrateProduct1b ขยายผลิตภัณฑ์ 1 {@Override โมฆะสาธารณะแสดง () {super.show (); System.out.println ("นี่อยู่ภายใต้ผลิตภัณฑ์ 1: ผลิตภัณฑ์ B"); }} คลาสสาธารณะ GrateProduct2A ขยาย Product2 {@Override โมฆะสาธารณะแสดง () {super.show (); System.out.println ("นี่อยู่ภายใต้ผลิตภัณฑ์ 2: ผลิตภัณฑ์ A"); }} คลาสสาธารณะ GrateProduct2b ขยาย Product2 {@Override โมฆะสาธารณะแสดง () {super.show (); System.out.println ("นี่อยู่ภายใต้ผลิตภัณฑ์ 2: Product B"); }} // บทคัดย่อโรงงานสร้างผลิตภัณฑ์บทคัดย่อที่แตกต่างกันอินเทอร์เฟซสาธารณะ ipractory {public iProduct1 createProduct1a (); // คลาส 1 โมเดลผลิตภัณฑ์ A A IPRODUCT1 Public 1 CreateProduct1b (); // รูปแบบผลิตภัณฑ์คลาส B โรงงานผลิตภัณฑ์สร้างผลิตภัณฑ์ทางกายภาพประเภทการส่งคืนเป็นนามธรรมของผลิตภัณฑ์สาธารณะในชั้นเรียนการใช้งาน IFACTORY {สาธารณะ iProduct1 createProduct1a () {ส่งคืน grateproduct1a ใหม่ (); } สาธารณะ iProduct1 createProduct1b () {ส่งคืน grateproduct1b ใหม่ (); } สาธารณะ iProduct2 createProduct2a () {ส่งคืนใหม่ greadeProduct2a (); } สาธารณะ iProduct2 createProduct2b () {ส่งคืนใหม่ greadeProduct2b (); }} /** รูปแบบของโรงงานนามธรรม: ใช้เพื่อสร้างชุดของวัตถุที่เกี่ยวข้องหรือพึ่งพาซึ่งกันและกัน** กระบวนการ: โรงงานนามธรรม, โรงงานทางกายภาพผลิตผลิตภัณฑ์* ผลิตภัณฑ์นามธรรมผลิตภัณฑ์ทางกายภาพตระหนักถึงฟังก์ชั่นผลิตภัณฑ์* ข้อเสีย: เมื่อคุณต้องการเพิ่มผลิตภัณฑ์ โรงงาน(); iProduct1 Product1a = Factory.CreateProduct1a (); Product1a.show (); iProduct1 Product1b = Factory.CreateProduct1b (); Product1b.show (); iProduct2 Product2a = Factory.CreateProduct2A (); Product2a.show (); iProduct2 Product2b = Factory.CreateProduct2b (); Product2b.show (); -