สรุป
รูปแบบการออกแบบเป็นศิลปะ หากคุณเข้าใจงานศิลปะนี้จริงๆคุณจะพบว่าโลกจะสวยขึ้น
คำนิยาม
กำหนดอินเทอร์เฟซสำหรับการสร้างวัตถุให้คลาสย่อยตัดสินใจว่าคลาสใดที่จะสร้างอินสแตนซ์
ใช้สถานการณ์
ทุกที่ที่คุณใช้วัตถุที่ซับซ้อนคุณสามารถใช้โหมดโรงงาน
uml
1. โรงงานนามธรรม
Abstract Factory: เราทุกคนรู้ว่าโรงงานโดยทั่วไปมีฟังก์ชั่นเดียวเท่านั้นนั่นคือการผลิตตัวอย่างเช่นโรงงานผลิตรถยนต์ Geely นั่นคือรถยนต์ Geely ผู้ผลิตโทรศัพท์มือถือ iPhone ฯลฯ ดังนั้นจึงสามารถสรุปได้อย่างง่าย ๆ นั่นคือสร้าง ();
2. โรงงานผลิตรถยนต์เฉพาะ
โรงงานผลิตรถยนต์เฉพาะ: ตระหนักถึงโรงงานนามธรรมด้วยกระบวนการและวิธีการจริงสำหรับการผลิตรถยนต์ ฯลฯ
3. รถนามธรรม
รถยนต์นามธรรม: โดยทั่วไปเรารู้ว่ารถยนต์สามารถวิ่งเล่นดนตรีนำทางและเลี้ยวเป็นคุณสมบัติทั่วไปของรถยนต์
4. รถเฉพาะ
รถยนต์นามธรรม: รถยนต์คอนกรีตตระหนักถึงรถนามธรรมและมีฟังก์ชั่นทั้งหมด แน่นอนว่ารถยนต์ที่แตกต่างกันอาจมีฟังก์ชั่นที่แตกต่างกัน
การแนะนำสั้น ๆ ข้างต้นคือโดยทั่วไปแล้วโรงงานยานยนต์เฉพาะผลิตรถยนต์ที่สอดคล้องกันเช่นโรงงาน Audi, โรงงานโฟล์คสวาเกน, รถโฟล์คสวาเกน ฯลฯ
การสาธิตรหัส
เราเข้าใจอย่างชัดเจนถึงความสัมพันธ์ระหว่างพวกเขาข้างต้นดังนั้นเราจะใช้รหัสเพื่อแสดงความคิดและตรรกะของเราด้านบนในรหัส:
(1) โรงงานรถยนต์นามธรรม
แพ็คเกจ com.zengtao.demo.factory;/*** บทคัดย่อโรงงาน*/บทคัดย่อระดับสาธารณะ carfactory {บทคัดย่อสาธารณะ <t ขยายรถ> t createCar (คลาส <t> cla);}(2) โรงงานรถยนต์เฉพาะ
แพ็คเกจ com.zengtao.demo.factory;/*** Audi Factory*/Public Class Audifactory ขยาย carfactory {@suppresswarnings ("ไม่ถูกตรวจสอบ") @Override สาธารณะ <t ขยายรถ> t createCar (คลาส <t> cla) {car car = null; ลอง {car = (car) class.forname (cla.getName ()). newInstance (); } catch (exception e) {e.printstacktrace (); } return (t) Car; -(3) การกำหนดรถนามธรรม
แพ็คเกจ com.zengtao.demo.factory; รถระดับนามธรรมสาธารณะ {ไดรฟ์โมฆะนามธรรมสาธารณะ (); บทคัดย่อสาธารณะเป็นโมฆะ selfnagive (); Public Public Void Playmusic ();}(4) รถเฉพาะ
(Audi Q3)
แพ็คเกจ com.zengtao.demo.factory; คลาสสาธารณะ Audiq3Car ขยาย Audicar {@Override โมฆะสาธารณะไดรฟ์ () {System.out.println ("Audiq3Car ได้รับการผลิตสำเร็จแล้ว"); System.out.println ("Audiq3Car Drive"); } @Override โมฆะสาธารณะ selfnagive () {system.out.println ("audiq3car selfnagive"); } @Override โมฆะสาธารณะ playmusic () {system.out.println ("audiq3car selfnagive"); } @Override โมฆะสาธารณะ playmusic () {system.out.println ("Audiq3car playmusic"); System.out.println (""); -(Audi Q5)
แพ็คเกจ com.zengtao.demo.factory; คลาสสาธารณะ Audiq5Car ขยาย Audicar {@Override โมฆะสาธารณะไดรฟ์ () {System.out.println ("Audiq5Car ได้รับการผลิตสำเร็จแล้ว"); System.out.println ("Audiq5Car Drive"); } @Override โมฆะสาธารณะ selfnagive () {system.out.println ("audiq5car selfnagive"); } @Override โมฆะสาธารณะ playmusic () {system.out.println ("audiq5car selfnagive"); } @Override โมฆะสาธารณะ playmusic () {system.out.println ("Audiq5car playmusic"); System.out.println (""); -(5) โทร
แพ็คเกจ com.zengtao.demo; นำเข้า com.zengtao.demo.factory.audifactory; นำเข้า com.zengtao.demo.factory.audiq3car; นำเข้า com.zengtao.demo.factory.audiq5car; คลาสสาธารณะคลาสหลัก Audifactory (); // ใช้โรงงานเพื่อสร้าง Q3 Car Audiq3car Audiq3Car = AudioFactory.CreateCar (Audiq3Car.Class); // ใช้โรงงานเพื่อสร้าง Q5 Car Audiq5car Audiq5Car = Audifactory.createCar (Audiq5Car.class); // เริ่มขับรถและเล่นเพลง audiq3car.drive (); audiq3car.playmusic (); audiq5car.drive (); audiq5car.playmusic (); -
(6) ผลลัพธ์
สำหรับวิธีการข้างต้นวิธีการโรงงานใช้เพื่อตระหนักถึงกระบวนการง่าย ๆ ในการผลิตรถยนต์
จุดแรก:
ในโรงงานนามธรรมเราเห็นว่าวิธี CreateCar (Class CLA) ทำไมเราถึงกำหนดมันเช่นนี้? ใช้การสะท้อนเพื่อสร้างรถเฉพาะ ด้วยวิธีนี้รถยนต์ประเภทต่าง ๆ ของเราต้องการเงื่อนไขที่สอดคล้องกันเท่านั้น ดังนั้นจึงเป็นประโยชน์ในการเขียนด้วยวิธีนี้เช่นเดียวกับหลาย ๆ คน Audi มี Q3, Q5, A4, A6, A7, A8 และซีรี่ส์อื่น ๆ
จุดที่สอง:
หากเรามีรถยนต์คันอื่นเช่น BMW ซึ่งมี BMW X1, 320, X5 ฯลฯ เรายังสามารถใช้งานได้ง่าย ๆ เพียงแค่ใช้โรงงานนามธรรมแล้วใช้รถยนต์นามธรรมในรถเฉพาะและการขยายตัวก็สะดวกมาก
สรุป
เกือบจะถึงเวลาที่จะออกจากโรงงานนามธรรมที่นี่ โมเดลวิธีการโรงงานเป็นแบบจำลองการออกแบบที่ค่อนข้างง่ายและดี
แต่ก็มีข้อเสียเช่น: หากมีรถยนต์ประเภทใหม่และประเภทอื่น ๆ คุณจะต้องใช้โรงงานนามธรรมและรถยนต์นามธรรมแล้วสร้างคลาสใหม่สองคลาสใหม่
แต่ถ้าไม่ใช่รถยนต์ แต่เป็นโทรศัพท์มือถือคุณต้องเขียนมันทั้งหมดซึ่งจะทำให้ชั้นเรียนจำนวนมากปรากฏขึ้นไม่ว่าจะใช้โมเดลวิธีการโรงงานหรือตัดสินใจตามความต้องการ
หมายเหตุ: อย่าใช้รูปแบบการออกแบบเพื่อประโยชน์ในการออกแบบ แน่นอนว่ารูปแบบวิธีการโรงงานมักใช้เช่น: วิธี onCreate ของกิจกรรมเรายังโหลดและสร้างอินเทอร์เฟซที่สอดคล้องกันตามเค้าโครง XML ที่เรากำหนด ฯลฯ
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น