คำจำกัดความ: จัดเตรียมอินเทอร์เฟซสำหรับการสร้างชุดของวัตถุที่เกี่ยวข้องหรือพึ่งพาซึ่งกันและกันโดยไม่ต้องระบุคลาสคอนกรีต
ประเภท: สร้างแผนภาพคลาสรูปแบบคลาส:
ความแตกต่างระหว่างรูปแบบโรงงานนามธรรมและรูปแบบวิธีการโรงงาน
รูปแบบของโรงงานนามธรรมเป็นรุ่นที่อัพเกรดของรูปแบบวิธีการโรงงานซึ่งใช้ในการสร้างชุดของวัตถุที่เกี่ยวข้องหรือพึ่งพาซึ่งกันและกัน ความแตกต่างระหว่างมันกับโมเดลวิธีการโรงงานคือโมเดลวิธีการโรงงานกำหนดเป้าหมายโครงสร้างลำดับชั้นของผลิตภัณฑ์ ในขณะที่โมเดลโรงงานนามธรรมกำหนดเป้าหมายโครงสร้างลำดับชั้นของผลิตภัณฑ์หลายอย่าง ในการเขียนโปรแกรมโครงสร้างผลิตภัณฑ์มักจะปรากฏเป็นอินเทอร์เฟซหรือคลาสนามธรรม กล่าวคือผลิตภัณฑ์ทั้งหมดที่จัดทำโดยโมเดลวิธีการโรงงานนั้นได้มาจากอินเทอร์เฟซหรือคลาสนามธรรมเดียวกันในขณะที่ผลิตภัณฑ์ที่ได้รับจากโมเดลโรงงานนามธรรมนั้นได้มาจากอินเตอร์เฟสที่แตกต่างกันหรือคลาสนามธรรม
ในรูปแบบโรงงานนามธรรมมีแนวคิดของตระกูลผลิตภัณฑ์: ครอบครัวผลิตภัณฑ์ที่เรียกว่าหมายถึงครอบครัวของผลิตภัณฑ์ที่ประกอบด้วยผลิตภัณฑ์ที่เกี่ยวข้องกับการใช้งานในลำดับชั้นของผลิตภัณฑ์ที่แตกต่างกัน ชุดของผลิตภัณฑ์ที่จัดทำโดยโมเดลโรงงานนามธรรมเป็นตระกูลผลิตภัณฑ์ ในขณะที่ชุดผลิตภัณฑ์ที่จัดทำโดยวิธีการโรงงานเรียกว่าโครงสร้างลำดับชั้น เรายังคงใช้ตัวอย่างของการผลิตรถยนต์เพื่อแสดงความแตกต่างระหว่างพวกเขา
ในแผนภาพระดับข้างต้นแฮทช์แบ็กและซีดานเรียกว่าโครงสร้างลำดับชั้นที่แตกต่างกันสองโครงสร้าง ในขณะที่ยานพาหนะกำจัด 2.0 และยานพาหนะการกระจัด 2.4 เรียกว่าสองครอบครัวผลิตภัณฑ์ที่แตกต่างกัน เพื่อให้มีความเฉพาะเจาะจงมากขึ้น hatchback 2.0-displacement และ hatchback 2.4 displacement เป็นของโครงสร้างระดับเดียวกันซีดาน 2.0-displacement และซีดาน 2.4 displacement เป็นของโครงสร้างระดับอื่น; ในขณะที่ hatchback 2.0-displacement และซีดาน 2.0-displacement เป็นของตระกูลผลิตภัณฑ์เดียวกันและ hatchback 2.4-displacement และซีดาน 2.4 displacement เป็นของตระกูลผลิตภัณฑ์อื่น
เมื่อคุณเข้าใจแนวคิดของโครงสร้างลำดับชั้นและครอบครัวผลิตภัณฑ์คุณจะเข้าใจความแตกต่างระหว่างโมเดลวิธีการโรงงานและแบบจำลองโรงงานนามธรรม หากผลิตภัณฑ์ทั้งหมดของโรงงานอยู่ในโครงสร้างลำดับชั้นเดียวกันพวกเขาจะอยู่ในรูปแบบวิธีการโรงงาน หากผลิตภัณฑ์ของโรงงานมาจากโครงสร้างแบบลำดับชั้นหลายแบบพวกเขาจะอยู่ในรูปแบบโรงงานนามธรรม ในตัวอย่างนี้หากแบบจำลองโรงงานจัดเตรียมแฮทช์แบ็ก 2.0 และแฮทช์แบ็กการกระจัด 2.4 จะเป็นของแบบจำลองวิธีการโรงงาน หากแบบจำลองโรงงานจัดหาผลิตภัณฑ์สองผลิตภัณฑ์ 2.4 hatchback displacement และซีดานการกระจัด 2.4 แบบจำลองโรงงานนี้เป็นแบบจำลองโรงงานนามธรรมเนื่องจากผลิตภัณฑ์ที่ให้มาเป็นสองโครงสร้างลำดับชั้นที่แตกต่างกัน แน่นอนว่าหากโรงงานจัดหาผลิตภัณฑ์ของทั้งสี่รุ่นเนื่องจากผลิตภัณฑ์อยู่ในโครงสร้างแบบลำดับชั้นสองอย่างแน่นอนว่าจะเป็นของโมเดลโรงงานนามธรรม
ตัวอย่าง
มาดูตัวอย่างคลาสนามธรรมของคลาสโรงงาน:
แพ็คเกจบทคัดย่อ บทคัดย่อระดับสาธารณะ AbstractCreator {// สร้างวิธีการผลิตภัณฑ์บทคัดย่อนามธรรมนามธรรม ProtractProducta createProducta (); // สร้างวิธีการผลิตภัณฑ์ B Public AbstractProductb createProductb ();}คลาสนามธรรมของผลิตภัณฑ์ก
แพ็คเกจบทคัดย่อ บทคัดย่อระดับสาธารณะ AbstractProducta {// วิธีการแบ่งปันโดยผลิตภัณฑ์โมฆะสาธารณะ ShareMethod () {System.out.println ("วิธีการประมวลผลตรรกะทางธุรกิจที่ใช้ร่วมกันโดยผลิตภัณฑ์ A ... "); } // วิธีการผลิตภัณฑ์ย่อยที่แตกต่างกันของผลิตภัณฑ์เป็นโมฆะนามธรรมสาธารณะ dosomething (); -คลาสนามธรรมของผลิตภัณฑ์ B
แพ็คเกจบทคัดย่อ บทคัดย่อระดับสาธารณะ AbstractProductB {// วิธีการแชร์โดยผลิตภัณฑ์ B โมฆะสาธารณะ ShareMethod () {System.out.println ("วิธีการประมวลผลตรรกะทางธุรกิจที่ใช้ร่วมกันโดยผลิตภัณฑ์ B ... "); } // ผลิตภัณฑ์ย่อยที่แตกต่างกันของผลิตภัณฑ์ B นามธรรมสาธารณะเป็นโมฆะ Dosomething (); } แพ็คเกจการใช้งานระดับโรงงาน AbstractFactory; ผู้สร้างระดับสาธารณะ 1 ขยายบทคัดย่อ {@Override Public AbstractProducta createProducta () {ส่งคืน producta1 () ใหม่ (); } @Override Public AbstractProductB createProductB () {ส่งคืน ProductB1 () ใหม่ (); }} แพ็คเกจการใช้งานระดับโรงงาน AbstractFactory; Public Class Creator2 ขยาย AbstractCreator {@Override Public AbstractProducta createProducta () {ส่งคืน producta2 () ใหม่ (); } @Override Public AbstractProductB createProductB () {ส่งคืน ProductB2 () ใหม่ (); -ผลิตภัณฑ์ A1
แพ็คเกจบทคัดย่อ Public Class Producta1 ขยาย AbstractProducta {@Override โมฆะสาธารณะ Dosomething () {System.out.println ("วิธีการประมวลผลตรรกะทางธุรกิจของผลิตภัณฑ์ A1 ... "); -ผลิตภัณฑ์ A2
แพ็คเกจบทคัดย่อ Public Class Producta2 ขยาย AbstractProducta {@Override โมฆะสาธารณะ Dosomething () {System.out.println ("วิธีการประมวลผลตรรกะทางธุรกิจของผลิตภัณฑ์ A2 ... "); -ผลิตภัณฑ์ B1
แพ็คเกจบทคัดย่อ Public Class ProductB1 ขยาย AbstractProductB {@Override โมฆะสาธารณะ Dosomething () {System.out.println ("วิธีการประมวลผลตรรกะทางธุรกิจของ B1 ... "); -ผลิตภัณฑ์ B2
แพ็คเกจบทคัดย่อ Public Class ProductB2 ขยาย AbstractProductB {@Override โมฆะสาธารณะ Dosomething () {System.out.println ("วิธีการประมวลผลตรรกะทางธุรกิจของ B2 ... "); - ข้อดีของรูปแบบโรงงานนามธรรม
นอกเหนือจากการมีข้อได้เปรียบของแบบจำลองวิธีการโรงงานแล้วข้อได้เปรียบที่สำคัญที่สุดคือครอบครัวผลิตภัณฑ์สามารถถูก จำกัด ภายในชั้นเรียน ครอบครัวผลิตภัณฑ์ที่เรียกว่าโดยทั่วไปมีความสัมพันธ์บางอย่างในระดับที่มากขึ้นหรือน้อยลง แบบจำลองโรงงานนามธรรมสามารถกำหนดและอธิบายความสัมพันธ์ระหว่างตระกูลผลิตภัณฑ์ภายในชั้นเรียนโดยไม่ต้องแนะนำคลาสใหม่โดยเฉพาะสำหรับการจัดการ
ข้อเสียของรูปแบบโรงงานนามธรรม
การขยายครอบครัวผลิตภัณฑ์จะเป็นงานที่ลำบากมาก หากจำเป็นต้องเพิ่มผลิตภัณฑ์ใหม่ในตระกูลผลิตภัณฑ์การเรียนเกือบทั้งหมดของโรงงานจะต้องได้รับการแก้ไข ดังนั้นเมื่อใช้แบบจำลองโรงงานนามธรรมการแบ่งโครงสร้างลำดับชั้นของผลิตภัณฑ์มีความสำคัญมาก
สถานการณ์ที่เกี่ยวข้อง
รูปแบบของโรงงานนามธรรมสามารถใช้เมื่อวัตถุที่จะสร้างเป็นชุดของครอบครัวผลิตภัณฑ์ที่มีความสัมพันธ์กันหรือพึ่งพาซึ่งกันและกัน เพื่อให้ชัดเจนยิ่งขึ้นในระบบการสืบทอดหากมีโครงสร้างลำดับชั้นหลายแบบ (นั่นคือมีคลาสนามธรรมหลายประเภท) และมีความสัมพันธ์หรือข้อ จำกัด บางประการระหว่างคลาสการใช้งานที่แบ่งออกเป็นโครงสร้างลำดับชั้นแต่ละแบบจำลองโรงงานนามธรรมสามารถใช้ มันเหมาะสมกว่าที่จะใช้โรงงานอิสระหลายแห่งเพื่อสร้างผลิตภัณฑ์หากไม่มีการเชื่อมโยงหรือข้อ จำกัด ระหว่างคลาสการใช้งานในแต่ละลำดับชั้น
สรุป
ไม่ว่าจะเป็นแบบจำลองโรงงานอย่างง่ายรูปแบบวิธีการโรงงานหรือแบบจำลองโรงงานนามธรรมพวกเขาทั้งหมดเป็นของแบบจำลองโรงงานและมีความคล้ายคลึงกันมากในรูปแบบและลักษณะ เป้าหมายสูงสุดของพวกเขาคือการแยกส่วน เมื่อใช้มันเราไม่จำเป็นต้องใส่ใจว่ารูปแบบนี้เป็นวิธีการจากโรงงานหรือแบบจำลองโรงงานนามธรรมเพราะวิวัฒนาการระหว่างพวกเขามักจะเข้าใจยาก บ่อยครั้งที่คุณจะพบว่าเมื่อมีข้อกำหนดใหม่มาถึงการปรับเปลี่ยนเล็กน้อยและมีการเพิ่มวิธีการใหม่ผลิตภัณฑ์ในชั้นเรียนรูปแบบตระกูลผลิตภัณฑ์ในโครงสร้างลำดับชั้นที่แตกต่างกันมันจะกลายเป็นโมเดลโรงงานนามธรรม และสำหรับโมเดลโรงงานนามธรรมเมื่อวิธีการลดลงเพื่อให้ผลิตภัณฑ์ที่จัดให้ไม่ได้สร้างตระกูลผลิตภัณฑ์อีกต่อไปมันจะพัฒนาเป็นแบบจำลองวิธีการโรงงาน
ดังนั้นเมื่อใช้โหมดโรงงานคุณจะต้องดูแลว่าจุดประสงค์ในการลดการมีเพศสัมพันธ์นั้นสำเร็จหรือไม่