Latest web development tutorials
×

设计模式 หลักสูตร

รูปแบบการออกแบบ รู้เบื้องต้นเกี่ยวกับรูปแบบการออกแบบ โหมดโรงงาน แบบโรงงานย่อ รูปแบบเดี่ยว รุ่นสร้าง รุ่นต้นแบบ อะแดปเตอร์รุ่น สะพานโหมด รูปแบบตัวกรอง โหมดการทำงานร่วมกัน มัณฑนากร รูปแบบซุ้ม ฟลายเวท โหมดพร็อกซี่ ห่วงโซ่ของรูปแบบความรับผิดชอบ โหมดคำสั่ง รูปแบบล่าม โหมดซ้ำแล้วซ้ำอีก รูปแบบที่เป็นสื่อกลาง รูปแบบของที่ระลึก รูปแบบการสังเกตการณ์ รูปแบบของรัฐ null Object Model โหมดกลยุทธ์ โหมดแม่แบบ รูปแบบของผู้เข้าชม MVC โหมด โหมดตัวแทน โหมดนิติบุคคลองค์ประกอบ รูปแบบการเข้าถึงข้อมูลของวัตถุ รูปแบบการควบคุมด้านหน้า intercepting รูปแบบตัวกรอง รูปแบบการบริการผู้แทนจำหน่าย วัตถุ Transfer รุ่น

设计模式其他

ทรัพยากรโหมดออกแบบ

โหมดโรงงาน

โรงงานรูปแบบ (แบบโรงงาน) Java เป็นส่วนหนึ่งของการใช้กันมากที่สุดรูปแบบการออกแบบ ประเภทของรูปแบบการออกแบบนี้เป็นของสร้างสกีซึ่งมีวิธีที่ดีที่สุดในการสร้างวัตถุ

ในโหมดโรงงานเราจะไม่เปิดเผยให้ลูกค้าในการสร้างตรรกะเมื่อคุณสร้างวัตถุและผ่านการใช้งานติดต่อกันเพื่อชี้ไปยังวัตถุที่สร้างขึ้นใหม่

การแนะนำ

เจตนา: ความหมายของอินเตอร์เฟซของวัตถุที่สร้างขึ้นให้ subclasses ตัดสินใจที่ชั้นเรียนเพื่อยกตัวอย่างโรงงานรูปแบบโรงงานที่จะทำให้กระบวนการของการสร้างความล่าช้าในการย่อยชั้นเรียน

เป็นหลักในการแก้ปัญหา: ปัญหาตัวเลือกหลักของอินเตอร์เฟซ

เมื่อใช้: เมื่อเราอย่างชัดเจนสร้างอินสแตนซ์ที่แตกต่างกันตามแผนเงื่อนไขที่แตกต่าง

วิธีการแก้ไข: ให้ subclasses ที่จะใช้อินเตอร์เฟซที่โรงงานก็เป็นผลิตภัณฑ์ที่เป็นนามธรรมกลับ

รหัสสำคัญ: กระบวนการสร้างดำเนินการใน subclasses ของมัน

ตัวอย่างการใช้งาน: 1, คุณต้องการรถคุณสามารถเลือกจากภายในโรงงานโดยตรงโดยไม่ต้องท่อรถเป็นวิธีที่จะทำเช่นเดียวกับการดำเนินการภายในรถ2 ฐานข้อมูลการแลกเปลี่ยน Hibernate เพียงแค่การเปลี่ยนภาษาและการขับรถสามารถ

ข้อดี: 1, โทรต้องการที่จะสร้างวัตถุเพียงแค่รู้ชื่อของมันกับมัน2 ความยืดหยุ่นสูงถ้าคุณต้องการที่จะเพิ่มสินค้าตราบใดที่การขยายตัวของระดับโรงงานสามารถ 3, การป้องกันการก่อให้เกิดผลิตภัณฑ์โทรที่เกี่ยวข้องเฉพาะกับอินเตอร์เฟซสินค้า

ข้อเสีย: เพิ่มขึ้นของแต่ละผลิตภัณฑ์ที่เราต้องเพิ่มการเรียนและวัตถุเพื่อให้บรรลุโรงงานคอนกรีตดังนั้นจำนวนของการเรียนในระบบเพิ่มขึ้นชี้แจงในระดับบางอย่างเพิ่มความซับซ้อนของระบบ แต่ยังเพิ่มระบบเฉพาะชั้น การพึ่งพาอาศัยกันนี้ไม่ได้เป็นสิ่งที่ดี

สถานการณ์การใช้งาน: 1, Logger: บันทึกอาจถูกบันทึกไปยังดิสก์ท้องถิ่นของคุณยากเหตุการณ์ของระบบเซิร์ฟเวอร์ระยะไกลผู้ใช้สามารถเลือกที่จะเข้าสู่ระบบที่ไหนสักแห่ง2, การเข้าถึงฐานข้อมูลเมื่อผู้ใช้ไม่ทราบชนิดของระบบขั้นสุดท้ายใช้ฐานข้อมูลและฐานข้อมูลอาจมีการเปลี่ยนแปลง 3, การออกแบบกรอบสำหรับการเชื่อมต่อกับเซิร์ฟเวอร์ที่คุณจะต้องทำข้อตกลงสาม "POP3", "IMAP", "HTTP" สามารถที่สามเหล่านี้เป็นหมวดหมู่ผลิตภัณฑ์เพื่อให้เกิดการติดต่อกัน

หมายเหตุ: ในชั้นเรียนสร้างโหมดใดก็ตามที่มันเป็นสิ่งจำเป็นในการสร้างวัตถุที่ซับซ้อนคุณสามารถใช้รูปแบบการโรงงานสิ่งหนึ่งที่ควรทราบก็คือสถานที่สำหรับวัตถุที่ซับซ้อนโดยใช้รูปแบบโรงงานและวัตถุง่ายโดยเฉพาะอย่างยิ่งต้องการเพียงจะแล้วเสร็จภายในวัตถุใหม่ที่สร้างขึ้นโดยไม่ต้องใช้รูปแบบโรงงาน หากคุณใช้รูปแบบโรงงานมันเป็นสิ่งจำเป็นที่จะแนะนำระดับโรงงานก็จะเพิ่มความซับซ้อนของระบบ

การสำนึก

เราจะสร้างอินเตอร์เฟซที่ระดับนิติบุคคลและการดำเนินการอินเตอร์เฟซที่รูปร่างรูปทรงขั้นตอนต่อไปคือการกำหนดระดับชั้นโรงงานShapeFactory

FactoryPatternDemo สาธิตของเราที่จะได้รับการเรียนการใช้วัตถุรูปร่างShapeFactory มันจะส่งข้อมูล(วงกลม/ สี่เหลี่ยมผืนผ้า / square) เพื่อShapeFactory ก็ต้องการที่จะได้รับชนิดของวัตถุ

รูปแบบโรงงานแผนภาพ UML

ขั้นตอนที่ 1

สร้างอินเตอร์เฟซ

Shape.java

รูปร่างอินเตอร์เฟซที่สาธารณะ {
   วาดเป็นโมฆะ ();
}

ขั้นตอนที่ 2

สร้างคลาสนิติบุคคลที่ใช้อินเตอร์เฟซ

Rectangle.java

เรียนสาธารณะสี่เหลี่ยมผืนผ้ารูปร่างดำเนิน {

   @Override
   วาดโมฆะสาธารณะ () {
      System.out.println ( "ภายในสี่เหลี่ยมผืนผ้า :: วาด () วิธีการ.");
   }
}

Square.java

เรียนสาธารณะสแควร์ใช้รูปร่าง {

   @Override
   วาดโมฆะสาธารณะ () {
      System.out.println ( "สแควร์ภายใน :: วาด () วิธีการ.");
   }
}

Circle.java

วงกลมเรียนสาธารณะดำเนินรูปร่าง {

   @Override
   วาดโมฆะสาธารณะ () {
      System.out.println ( "ภายในวงกลม :: วาด () วิธีการ.");
   }
}

ขั้นตอนที่ 3

สร้างโรงงานเพื่อผลิตชั้นเรียนนิติบุคคลวัตถุที่อยู่บนพื้นฐานของข้อมูลที่ได้รับมา

ShapeFactory.java

ShapeFactory คลาสที่สาธารณะ {
	
   // ใช้ getShape วิธีการที่จะได้รับวัตถุของรูปร่างรูปทรงประเภทประชาชน getShape (String shapeType) ความ {
      ถ้า (shapeType == null) {
         กลับ NULL;
      }		
      ถ้า (shapeType.equalsIgnoreCase ( "วงกลม")) {
         กลับแวดวงใหม่ ();
      } else if (shapeType.equalsIgnoreCase ( "สี่เหลี่ยม")) {
         กลับสี่เหลี่ยมผืนผ้าใหม่ ();
      } else if (shapeType.equalsIgnoreCase ( "สแควร์")) {
         กลับสแควร์ใหม่ ();
      }
      กลับ NULL;
   }
}

ขั้นตอนที่ 4

ใช้โรงงานที่จะได้รับวัตถุนิติบุคคลของการเรียนโดยการส่งผ่านข้อมูลประเภท

FactoryPatternDemo.java

FactoryPatternDemo คลาสที่สาธารณะ {

   ประชาชนเป็นโมฆะคง main (String args []) {
      ShapeFactory shapeFactory = ShapeFactory ใหม่ ();

      // รับวัตถุวงกลมและเรียกวิธีการวาดรูปร่างของมัน shape1 = shapeFactory.getShape ( "วงกลม");

      // เรียกวิธีการวาดของ shape1.draw วงกลม ();

      // รับวัตถุสี่เหลี่ยมผืนผ้าและเรียกมัน shape2 วิธีการวาดรูปร่าง = shapeFactory.getShape ( "สี่เหลี่ยม");

      // เรียกวิธีการวาดของ shape2.draw สี่เหลี่ยมผืนผ้า ();

      // รับวัตถุ Square และเรียกวิธีการวาดรูปร่างของมัน shape3 = shapeFactory.getShape ( "สแควร์");

      // เรียกวิธีวาดรูปสี่เหลี่ยม shape3.draw ();
   }
}

ขั้นตอนที่ 5

ตรวจสอบการส่งออก

ภายในวงกลม :: วาด () วิธีการ
ภายในสี่เหลี่ยมผืนผ้า :: วาด () วิธีการ
ภายในจัตุรัส :: วาด () วิธีการ