Latest web development tutorials
×

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

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

设计模式其他

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

รูปแบบการสังเกตการณ์

เมื่อมีความสัมพันธ์มากระหว่างวัตถุที่ใช้รูปแบบการสังเกตการณ์ (Observer รูปแบบ) ตัวอย่างเช่นเมื่อวัตถุมีการแก้ไขก็จะแจ้งให้วัตถุขึ้นโดยอัตโนมัติ รูปแบบการสังเกตการณ์เป็นรูปแบบพฤติกรรม

การแนะนำ

เจตนา: กำหนดอ้างอิงระหว่างวัตถุหนึ่งต่อหลายคนเมื่อรัฐของวัตถุที่มีการเปลี่ยนแปลงวัตถุทั้งหมดที่ขึ้นอยู่กับมันได้รับการแจ้งเตือนและการปรับปรุงโดยอัตโนมัติ

เป็นหลักในการแก้ปัญหา: สถานะของการแจ้งเตือนการเปลี่ยนแปลงวัตถุการแก้ไขปัญหาของวัตถุอื่น ๆ แต่ยังคำนึงถึงความสะดวกในการใช้งานและการมีเพศสัมพันธ์ต่ำให้ความมั่นใจในระดับสูงของการทำงานร่วมกัน

เมื่อใช้: วัตถุ (วัตถุเป้าหมาย) เปลี่ยนสถานะวัตถุทั้งหมดที่อ้างถึง (วัตถุสังเกต) จะได้รับการแจ้งเตือนการแจ้งเตือนการออกอากาศ

วิธีการแก้ไข: การใช้เทคโนโลยีเชิงวัตถุพึ่งพานี้สามารถลดลง

รหัสสำคัญ: ระดับนามธรรมมี ArrayList เก็บไว้สังเกตการณ์

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

ข้อดี: 1, ผู้สังเกตการณ์และสังเกตเห็นเป็นนามธรรมคู่2 เพื่อสร้างกลไกการทริกเกอร์

ข้อเสีย: 1 ถ้าวัตถุสังเกตที่มีจำนวนมากของผู้สังเกตการณ์ตรงและทางอ้อมก็จะแจ้งให้ผู้สังเกตการณ์ทั้งหมดจะใช้จ่ายเป็นจำนวนมากเวลา2 หากมีการพึ่งพาวงกลมระหว่างสังเกตการณ์และเป้าหมายที่สังเกตสังเกตเป้าหมายจะเรียกสายที่จะหมุนเวียนระหว่างพวกเขาอาจทำให้ระบบที่ผิดพลาด 3 โหมดผู้สังเกตการณ์มีกลไกที่จะให้ผู้ชมได้รู้ว่าผู้ชมที่เป็นวิธีการที่มีการเปลี่ยนแปลงที่สังเกตไม่ แต่เพียงรู้ว่าการเปลี่ยนแปลงเป้าหมายการสังเกต

สถานการณ์การใช้งาน: 1, วิธีการหลายชั้นย่อยทั่วไปและตรรกะเดียวกัน2 สิ่งที่สำคัญวิธีการที่ซับซ้อนถือได้ว่าเป็นวิธีการที่แม่แบบ

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

การสำนึก

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

ObserverPatternDemo เรียนสาธิตของเราโดยใช้วัตถุระดับและหน่วยงานเรื่องแสดงให้เห็นถึงรูปแบบการสังเกตการณ์

รูปแบบการสังเกตการณ์แผนภาพ UML

ขั้นตอนที่ 1

สร้างหมวดหมู่เรื่อง

Subject.java

นำเข้า java.util.ArrayList;
นำเข้า java.util.List;

เรียนสาธารณะเรื่อง {
	
   รายการส่วนตัว <สังเกตการณ์> สังเกตการณ์ 
      = ArrayList ใหม่ <สังเกตการณ์> ();
   รัฐ int เอกชน

   int สาธารณะ getState () {
      กลับรัฐ
   }

   โมฆะสาธารณะ setState (รัฐ int) {
      this.state = รัฐ
      notifyAllObservers ();
   }

   โมฆะสาธารณะแนบ (ผู้สังเกตสังเกต) {
      observers.add (ผู้สังเกต);		
   }

   notifyAllObservers โมฆะสาธารณะ () {
      สำหรับ (Observer สังเกตการณ์: ผู้สังเกตการณ์) {
         observer.update ();
      }
   } 	
}

ขั้นตอนที่ 2

สร้างคลาสสังเกตการณ์

Observer.java

สังเกตการณ์ระดับนามธรรมสาธารณะ {
   การป้องกันเรื่องเรื่อง;
   ประชาชนปรับปรุงโมฆะนามธรรม ();
}

ขั้นตอนที่ 3

สร้างคลาสนิติบุคคลสังเกตการณ์

BinaryObserver.java

เรียนสาธารณะ BinaryObserver ขยายสังเกตการณ์ {

   ประชาชน BinaryObserver (เรื่องเรื่อง) {
      this.subject = เรื่อง;
      this.subject.attach (นี้);
   }

   @Override
   ปรับปรุงโมฆะสาธารณะ () {
      System.out.println ( "สตริง Binary" 
      + Integer.toBinaryString (subject.getState ())); 
   }
}

OctalObserver.java

เรียนสาธารณะ OctalObserver ขยายสังเกตการณ์ {

   ประชาชน OctalObserver (เรื่องเรื่อง) {
      this.subject = เรื่อง;
      this.subject.attach (นี้);
   }

   @Override
   ปรับปรุงโมฆะสาธารณะ () {
     System.out.println ( "Octal สตริง" 
     + Integer.toOctalString (subject.getState ())); 
   }
}

HexaObserver.java

เรียนสาธารณะ HexaObserver ขยายสังเกตการณ์ {

   HexaObserver สาธารณะ (เรื่องเรื่อง) {
      this.subject = เรื่อง;
      this.subject.attach (นี้);
   }

   @Override
   ปรับปรุงโมฆะสาธารณะ () {
      System.out.println ( "Hex สตริง" 
      + Integer.toHexString (subject.getState ()) .toUpperCase ()); 
   }
}

ขั้นตอนที่ 4

ใช้เรื่องและสังเกตการณ์วัตถุนิติบุคคล

ObserverPatternDemo.java

ObserverPatternDemo คลาสที่สาธารณะ {
   ประชาชนเป็นโมฆะคง main (String args []) {
      เรื่องเรื่อง = เรื่องใหม่ ();

      HexaObserver ใหม่ (เรื่อง);
      ใหม่ OctalObserver (เรื่อง);
      ใหม่ BinaryObserver (เรื่อง);

      System.out.println ( "การเปลี่ยนแปลงครั้งแรกของรัฐ: 15");	
      subject.setState (15);
      System.out.println ( "การเปลี่ยนแปลงที่สองรัฐ: 10");	
      subject.setState (10);
   }
}

ขั้นตอนที่ 5

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

การเปลี่ยนแปลงครั้งแรกที่รัฐ: 15
Hex String: F
String Octal: 17
สตริงไบนารี: 1111
การเปลี่ยนแปลงรัฐที่สอง: 10
Hex String: การ
String Octal: 12
สตริงไบนารี: 1010