แบบโรงงานย่อ
โรงงานบทคัดย่อ (Abstract แบบโรงงาน) จะถูกสร้างขึ้นรอบโรงงานซุปเปอร์พืชอื่น ๆ พืชที่เป็นที่รู้จักกันเป็นซุปเปอร์โรงงานโรงงานอื่น ๆ ประเภทของรูปแบบการออกแบบนี้เป็นของสร้างสกีซึ่งมีวิธีที่ดีที่สุดในการสร้างวัตถุ
ในแบบโรงงานย่ออินเตอร์เฟซที่เป็นผู้รับผิดชอบสำหรับการสร้างโรงงานที่เกี่ยวข้องกับวัตถุโดยไม่ต้องระบุอย่างชัดเจนเรียนของพวกเขา แต่ละวัตถุที่สร้างขึ้นตามไปที่โรงงานสามารถให้รูปแบบของโรงงาน
การแนะนำ
เจตนา: การสร้างชุดของอินเตอร์เฟซวัตถุที่เกี่ยวข้องหรือขึ้นอยู่กับที่โดยไม่ต้องระบุชั้นเรียนของพวกเขาที่เป็นรูปธรรม
เป็นหลักในการแก้ปัญหา: ปัญหาตัวเลือกหลักของอินเตอร์เฟซ
เมื่อใช้: ผลิตภัณฑ์ระบบมีครอบครัวสินค้ามากกว่าหนึ่งและระบบเดียวที่ครอบครัวของสินค้าอุปโภคบริโภค
วิธีการแก้ไข: ในครอบครัวสินค้าภายในกำหนดหลายผลิตภัณฑ์
รหัสสำคัญ: รวมผลิตภัณฑ์ที่คล้ายคลึงกันในหลายโรงงาน
ตัวอย่างการใช้งาน: การทำงานเพื่อที่จะมีส่วนร่วมในการประชุมบางส่วนจะต้องมีสองคนหรือมากกว่าชุดของเสื้อผ้ามันพูด, เครื่องแต่งกายธุรกิจ (ชุดสมบูรณ์ชุดของผลิตภัณฑ์ที่เฉพาะเจาะจง) แฟชั่นชุดเดรส (ชุดสมบูรณ์ชุดของผลิตภัณฑ์ที่เฉพาะเจาะจง) แม้สำหรับครอบครัว คุณอาจจะมีนักธุรกิจหญิงที่เป็นนักธุรกิจของแฟชั่นของผู้หญิง, แฟชั่นผู้ชายพวกเขายังมีชุดสมบูรณ์คือชุดของผลิตภัณฑ์ที่เฉพาะเจาะจงสมมติว่าสถานการณ์ (ในความเป็นจริงไม่ได้อยู่หรืออื่น ๆ ที่ไม่ใช่คอมมิวนิสต์ แต่ในความโปรดปรานของคำอธิบายแบบโรงงานย่อ) ในบ้านของคุณหนึ่งในตู้เสื้อผ้า (โรงงานคอนกรีต) สามารถเก็บหนึ่งเช่น เสื้อผ้า (ชุดสมบูรณ์ชุดของผลิตภัณฑ์ที่เฉพาะเจาะจง) ทุกครั้งที่คุณใช้ชุดของเสื้อผ้าจากตู้เสื้อผ้าที่นำมาจากธรรมชาติ ด้วย OO คิดที่จะเข้าใจตู้เสื้อผ้าทุกชนิด (โรงงานคอนกรีต) มีตู้เสื้อผ้าชั้น (โรงงานนามธรรม) หนึ่งและแต่ละชุดหนึ่งของเสื้อผ้าและรวมถึงแจ็คเก็ตโดยเฉพาะ (สินค้าเฉพาะ) กางเกง (ที่เฉพาะเจาะจง ผลิตภัณฑ์) เหล่านี้อยู่ในความเป็นจริงแจ็คเก็ตเสื้อเฉพาะ (ผลิตภัณฑ์นามธรรม) กางเกงเฉพาะกางเกง (สินค้าอื่นนามธรรม)
จุดเด่น: เมื่อวัตถุครอบครัวผลิตภัณฑ์อื่น ๆ ได้รับการออกแบบให้ทำงานร่วมกันเราสามารถมั่นใจได้ว่าลูกค้ามักจะใช้เพียงแค่วัตถุผลิตภัณฑ์ในตระกูลเดียวกัน
ข้อเสีย: ผลิตภัณฑ์ในตระกูลขยายเป็นเรื่องยากมากที่จะเพิ่มความหลากหลายของผลิตภัณฑ์ทั้งในนามธรรมผู้สร้างรหัสริกา แต่ยังเพิ่มรหัสเฉพาะภายใน
สถานการณ์การใช้งาน: 1, QQ สำหรับผิวชุดของการเปลี่ยนแปลงร่วมกัน2 ขั้นตอนการสร้างระบบปฏิบัติการที่แตกต่างกัน
หมายเหตุ: ผลิตภัณฑ์ในตระกูลขยายเป็นเรื่องยากและง่ายต่อการขยายระดับผลิตภัณฑ์
การสำนึก
เราจะสร้างรูปร่างและสีอินเตอร์เฟซที่อินเตอร์เฟซและการดำเนินการในชั้นเรียนของหน่วยงานเหล่านี้ขั้นตอนต่อไปคือการสร้างโรงงานระดับนามธรรมAbstractFactoryระบุShapeFactoryระดับโรงงานและColorFactory เหล่านี้สองชั้นมีโรงงานขยายAbstractFactory แล้วสร้างโรงงานสร้าง /FactoryProducerชั้นสร้าง
AbstractFactoryPatternDemo เรียนสาธิตของเราโดยใช้FactoryProducer ที่จะได้รับวัตถุAbstractFactoryมันผ่านรูปร่างรูปร่างข้อมูล (วงกลม / สี่เหลี่ยมผืนผ้า / square) เพื่อAbstractFactory ก็ต้องการที่จะได้รับชนิดของวัตถุนอกจากนี้ยังส่งผ่านข้อมูลสีสี (สีแดง / เขียว / น้ำเงิน) เพื่อAbstractFactory ก็ต้องการที่จะได้รับชนิดของวัตถุ
ขั้นตอนที่ 1
อินเตอร์เฟซในการสร้างรูปร่าง
Shape.java
รูปร่างอินเตอร์เฟซที่สาธารณะ { วาดเป็นโมฆะ (); }
ขั้นตอนที่ 2
สร้างคลาสนิติบุคคลที่ใช้อินเตอร์เฟซ
Rectangle.java
เรียนสาธารณะสี่เหลี่ยมผืนผ้ารูปร่างดำเนิน { @Override วาดโมฆะสาธารณะ () { System.out.println ( "ภายในสี่เหลี่ยมผืนผ้า :: วาด () วิธีการ."); } }
Square.java
เรียนสาธารณะสแควร์ใช้รูปร่าง { @Override วาดโมฆะสาธารณะ () { System.out.println ( "สแควร์ภายใน :: วาด () วิธีการ."); } }
Circle.java
วงกลมเรียนสาธารณะดำเนินรูปร่าง { @Override วาดโมฆะสาธารณะ () { System.out.println ( "ภายในวงกลม :: วาด () วิธีการ."); } }
ขั้นตอนที่ 3
สร้างอินเตอร์เฟซสำหรับสี
Color.java
สีอินเตอร์เฟซที่สาธารณะ { เติมโมฆะ (); }
ขั้นตอนที่ 4
สร้างคลาสนิติบุคคลที่ใช้อินเตอร์เฟซ
Red.java
เรียนสาธารณะแดงใช้สี { @Override เติมโมฆะสาธารณะ () { System.out.println ( "ภายในสีแดง :: เติม () วิธีการ."); } }
Green.java
เรียนสาธารณะกรีนใช้สี { @Override เติมโมฆะสาธารณะ () { System.out.println ( "ภายในสีเขียว :: เติม () วิธีการ."); } }
Blue.java
เรียนสาธารณะสีฟ้าใช้สี { @Override เติมโมฆะสาธารณะ () { System.out.println ( "ภายในสีฟ้า :: เติม () วิธีการ."); } }
ขั้นตอนที่ 5
สร้างระดับนามธรรมสำหรับสีและรูปร่างของวัตถุที่จะได้รับจากโรงงาน
AbstractFactory.java
AbstractFactory ระดับนามธรรมสาธารณะ { นามธรรมสี getColor (String สี); รูปทรงนามธรรม getShape (รูปร่าง String); }
ขั้นตอนที่ 6
สร้างคลาสโรงงานขยาย AbstractFactory นิติบุคคลรุ่นวัตถุชั้นบนพื้นฐานของข้อมูลที่ได้รับ
ShapeFactory.java
เรียนสาธารณะ ShapeFactory ขยาย AbstractFactory { @Override รูปร่างประชาชน getShape (String shapeType) { ถ้า (shapeType == null) { กลับ NULL; } ถ้า (shapeType.equalsIgnoreCase ( "วงกลม")) { กลับแวดวงใหม่ (); } else if (shapeType.equalsIgnoreCase ( "สี่เหลี่ยม")) { กลับสี่เหลี่ยมผืนผ้าใหม่ (); } else if (shapeType.equalsIgnoreCase ( "สแควร์")) { กลับสแควร์ใหม่ (); } กลับ NULL; } @Override สี getColor (สี String) { กลับ NULL; } }
ColorFactory.java
เรียนสาธารณะ ColorFactory ขยาย AbstractFactory { @Override รูปร่างประชาชน getShape (String shapeType) { กลับ NULL; } @Override สี getColor (สี String) { ถ้า (สี == null) { กลับ NULL; } ถ้า (color.equalsIgnoreCase ( "สีแดง")) { กลับสีแดงใหม่ (); } else if (color.equalsIgnoreCase ( "สีเขียว")) { กลับมาใหม่สีเขียว (); } else if (color.equalsIgnoreCase ( "สีฟ้า")) { กลับมาใหม่สีฟ้า (); } กลับ NULL; } }
ขั้นตอนที่ 7
สร้างหมวดหมู่โรงงานผู้สร้าง / ผู้สร้างผ่านรูปร่างหรือสีที่จะได้รับข้อมูลโรงงาน
FactoryProducer.java
FactoryProducer คลาสที่สาธารณะ { สาธารณะคง getFactory AbstractFactory (String เลือก) { ถ้า (choice.equalsIgnoreCase ( "รูปร่าง")) { กลับ ShapeFactory ใหม่ (); } else if (choice.equalsIgnoreCase ( "COLOR")) { กลับ ColorFactory ใหม่ (); } กลับ NULL; } }
ขั้นตอนที่ 8
ใช้ FactoryProducer ที่จะได้รับ AbstractFactory ที่จะได้รับวัตถุของการเรียนโดยการส่งผ่านข้อมูลประเภทกิจการ
AbstractFactoryPatternDemo.java
เรียนสาธารณะ AbstractFactoryPatternDemo { ประชาชนเป็นโมฆะคง main (String args []) { // รับรูปร่างโรงงาน AbstractFactory shapeFactory = FactoryProducer.getFactory ( "รูปร่าง"); // รับวัตถุทรงกลมรูปร่าง shape1 = shapeFactory.getShape ( "วงกลม"); // เรียกวิธีการวาดของ shape1.draw วงกลม (); // รับวัตถุรูปทรงสี่เหลี่ยมผืนผ้ารูปร่าง shape2 = shapeFactory.getShape ( "สี่เหลี่ยม"); // เรียกวิธีการวาดของ shape2.draw สี่เหลี่ยมผืนผ้า (); // รับวัตถุรูปร่างรูปทรงสี่เหลี่ยม shape3 = shapeFactory.getShape ( "สแควร์"); // เรียกวิธีวาดรูปสี่เหลี่ยม shape3.draw (); // รับโรงงานสี AbstractFactory colorFactory = FactoryProducer.getFactory ( "COLOR"); // ได้สีวัตถุเป็นสีแดง = COLOR1 colorFactory.getColor ( "สีแดง"); // เรียกวิธีการเติม color1.fill แดง (); // ได้สีวัตถุสีเขียว color2 = colorFactory.getColor ( "สีเขียว"); // เรียกวิธีการเติม color2.fill สีเขียว (); // ได้สีวัตถุสีฟ้า color3 = colorFactory.getColor ( "สีฟ้า"); // เรียกวิธีการเติม color3.fill ฟ้า (); } }
ขั้นตอนที่ 9
ตรวจสอบการส่งออก
ภายในวงกลม :: วาด () วิธีการ ภายในสี่เหลี่ยมผืนผ้า :: วาด () วิธีการ ภายในจัตุรัส :: วาด () วิธีการ ภายในสีแดง :: เติม () วิธีการ ภายในสีเขียว :: เติม () วิธีการ ภายในสีฟ้า :: เติม () วิธีการ