Latest web development tutorials
×

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

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

设计模式其他

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

มัณฑนากร

มัณฑนากร (มัณฑนากรรูปแบบ) ช่วยให้คุณสามารถเพิ่มคุณสมบัติใหม่ให้กับวัตถุที่มีอยู่โดยไม่มีการเปลี่ยนแปลงโครงสร้างของมัน ประเภทของรูปแบบการออกแบบเป็นรูปแบบโครงสร้างก็สามารถใช้ได้เป็นชั้นห่อหุ้ม

รูปแบบนี้จะสร้างการตกแต่งที่ใช้ในการห่อชั้นและชั้นเดิมวิธีการในการรักษาความสมบูรณ์ของลายเซ็นตามสถานที่ตั้งของการให้ฟังก์ชันการทำงานเพิ่มเติม

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

การแนะนำ

เจตนา: แบบไดนามิกไปยังวัตถุที่จะเพิ่มความรับผิดชอบบางอย่างเพิ่มเติมทำงานที่เพิ่มขึ้น, มัณฑนากรรูปแบบเมื่อเทียบ subclassing ความยืดหยุ่นมากขึ้น

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

เมื่อใช้: คุณไม่ต้องการที่เพิ่มขึ้นในกรณีของหลายหมวดหมู่ย่อยการขยายชั้นเรียน

วิธีการแก้ปัญหา: การแบ่งหน้าที่ความรับผิดชอบการทำงานที่เฉพาะเจาะจงในขณะที่รูปแบบการสืบทอดมัณฑนากร

คีย์รหัส: 1 การกระทำระดับตัวแทนเป็นบทบาทที่เป็นนามธรรมไม่ควรการดำเนินงานเฉพาะ2 อ้างอิงชั้นเรียนและตัวแทนมรดกชั้นปรับเปลี่ยนการเรียนการขยายแทนที่วิธีเฉพาะระดับผู้ปกครอง

ตัวอย่างการใช้งาน: 1, Monkey King 72 การเปลี่ยนแปลงเมื่อเขากลายเป็น "พระวิหาร" เขาก็เป็นลิง แต่เขามีฟังก์ชั่นวัด2 โดยไม่คำนึงถึงกรอบรูปมีสามารถแขวนบนผนัง แต่มักจะมีกรอบรูปและกรอบเป็นจริงแขวนอยู่บนผนัง ก่อนที่จะแขวนบนผนัง, ภาพวาดสามารถถูกปกคลุมด้วยกระจกติดตั้งไปยังบ้านกรอบนั้นแล้วภาพวาด, กระจกและกรอบรูปของวัตถุ

ข้อดี: การตกแต่งและการตกแต่งที่สามารถพัฒนาได้อย่างอิสระไม่ได้คู่กับแต่ละอื่น ๆ ตกแต่งลวดลายคือโหมดการเลือกของมรดก, รูปแบบการตกแต่งแบบไดนามิกสามารถขยายคลาสที่ใช้ฟังก์ชั่นที่

ข้อเสีย: การตกแต่งที่ซับซ้อนมากขึ้นหลาย

สถานการณ์การใช้งาน: 1, ฟังก์ชั่นการขยายชั้นเรียน2 ฟังก์ชันการทำงานที่เพิ่มขึ้นแบบไดนามิกแบบไดนามิกเพิกถอน

หมายเหตุ: คุณสามารถใช้แทนมรดก

การสำนึก

เราจะสร้างอินเตอร์เฟซที่รูปร่างและการดำเนินงานของอินเตอร์เฟซที่รูปร่างเรียนนิติบุคคลจากนั้นเราจะสร้างสำนึกของอินเตอร์เฟซShapeDecoratorรูปร่างนามธรรมตกแต่งและวัตถุรูปร่างเป็นตัวแปรเช่นของมัน

RedShapeDecoratorคือเพื่อให้บรรลุการเรียนกิจการShapeDecorator

DecoratorPatternDemo เรียนสาธิตของเราโดยใช้RedShapeDecoratorการตกแต่งวัตถุรูปร่าง

มัณฑนากรรูปแบบแผนภาพ UML

ขั้นตอนที่ 1

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

Shape.java

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

ขั้นตอนที่ 2

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

Rectangle.java

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

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

Circle.java

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

   @Override
   วาดโมฆะสาธารณะ () {
      System.out.println ( "รูปร่าง: วงกลม");
   }
}

ขั้นตอนที่ 3

สร้างบรรลุนามธรรมอินเตอร์เฟซที่รูปร่างตกแต่ง

ShapeDecorator.java

ประชาชน ShapeDecorator ระดับนามธรรมดำเนินรูปร่าง {
   decoratedShape รูปร่างคุ้มครอง

   ShapeDecorator สาธารณะ (Shape decoratedShape) {
      this.decoratedShape = decoratedShape;
   }

   วาดโมฆะสาธารณะ () {
      decoratedShape.draw ();
   }	
}

ขั้นตอนที่ 4

สร้างนิติบุคคลขยายระดับShapeDecoratorตกแต่ง

RedShapeDecorator.java

เรียนสาธารณะ RedShapeDecorator ขยาย ShapeDecorator {

   RedShapeDecorator สาธารณะ (Shape decoratedShape) {
      เปอร์ (decoratedShape);		
   }

   @Override
   วาดโมฆะสาธารณะ () {
      decoratedShape.draw ();	       
      setRedBorder (decoratedShape);
   }

   ส่วนตัว setRedBorder โมฆะ (Shape decoratedShape) {
      System.out.println ( "สีของเส้นขอบ: สีแดง");
   }
}

ขั้นตอนที่ 5

RedShapeDecoratorใช้ในการตกแต่งวัตถุรูปร่าง

DecoratorPatternDemo.java

เรียนสาธารณะ DecoratorPatternDemo {
   ประชาชนเป็นโมฆะคง main (String args []) {

      รูปร่างวงกลม = แวดวงใหม่ ();

      รูปร่าง RedCircle = RedShapeDecorator ใหม่ (วงใหม่ ());

      รูปร่าง redRectangle = RedShapeDecorator ใหม่ (สี่เหลี่ยมผืนผ้าใหม่ ());
      System.out.println ( "วงกลมที่มีเส้นขอบปกติ");
      circle.draw ();

      System.out.println ( "\ n วงกลมของเส้นขอบสีแดง");
      redCircle.draw ();

      System.out.println ( "\ nRectangle ของเส้นขอบสีแดง");
      redRectangle.draw ();
   }
}

ขั้นตอนที่ 6

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

วงกลมที่มีชายแดนตามปกติ
รูปร่าง: วงกลม

วงกลมขอบสีแดง
รูปร่าง: วงกลม
สีของเส้นขอบ: สีแดง

สี่เหลี่ยมผืนผ้าขอบสีแดง
รูปร่าง: สี่เหลี่ยมผืนผ้า
สีของเส้นขอบ: สีแดง