ดังนั้นเมื่อสถานะของวัตถุเปลี่ยนแปลงวัตถุทั้งหมดที่ขึ้นอยู่กับมันจะได้รับการแจ้งเตือนและเปลี่ยนแปลงตามลำดับ
มีหลายวิธีในการใช้รูปแบบผู้สังเกตการณ์: รูปแบบนี้จะต้องมีสองบทบาท: ผู้สังเกตการณ์และวัตถุที่ถูกสังเกต มีความสัมพันธ์เชิงตรรกะของ "การสังเกต" ระหว่างผู้สังเกตการณ์และผู้สังเกตการณ์ เมื่อผู้สังเกตการณ์เปลี่ยนแปลงผู้สังเกตการณ์จะสังเกตการเปลี่ยนแปลงและปัญหาการเปลี่ยนแปลงที่สอดคล้องกัน
/*** ผู้สังเกตการณ์อินเทอร์เฟซ: Observer, คลาสที่ต้องใช้โหมดผู้สังเกต
/*** ผู้สังเกตการณ์ (โดยทั่วไปคือคลาสนามธรรมสะดวกสำหรับการขยายตัว): ประกาศวิธีการเปลี่ยนแปลงบางอย่างเกิดขึ้นแจ้งผู้สังเกตการณ์การเปลี่ยนแปลง */อินเทอร์เฟซสาธารณะที่ได้รับ {โมฆะสาธารณะ addobserver (Observer obs); // เพิ่มวัตถุผู้สังเกตการณ์โมฆะสาธารณะ removeObserver (Observer obs); // observer Object โมฆะสาธารณะแจ้งเตือน (เปลี่ยนสตริง); // แจ้งวัตถุผู้สังเกต /*** ผู้สังเกตการณ์เป้าหมาย: ใช้อินเทอร์เฟซของผู้สังเกตการณ์และดำเนินการที่สอดคล้องกันในวัตถุ Observer*/คลาสสาธารณะ concretewatched enprements beenobserved {// observer object collection รายการส่วนตัว <Observer> list = new ArrayList <observer> (); @Override โมฆะสาธารณะ Addobserver (Observer obs) // เพิ่มผู้สังเกตการณ์ {ถ้า (! list.contains (obs)) {list.add (obs); }} @Override โมฆะสาธารณะ removeObserver (Observer obs) // ผู้สังเกตการณ์บอกให้ผู้สังเกตการณ์ยกเลิกการสังเกตและลบผู้สังเกตการณ์ออกจากคอนเทนเนอร์ {ถ้า (list.contains (obs)) {list.remove (obs); }} @Override โมฆะสาธารณะ NotifyObServers (การเปลี่ยนแปลงสตริง) {// การสำรวจวิธีการของวัตถุและการโทรแยกต่างหากสำหรับการดำเนินการแจ้งเตือนการแจ้งเตือนสำหรับ (Observer OBS: รายการ) {obs.update (เปลี่ยน); - /*** เป้าหมายที่สังเกต (ผู้สังเกตการณ์เฉพาะ)*/คลาสสาธารณะเฉพาะผู้สังเกตการณ์ใช้ผู้สังเกตการณ์ {@Override โมฆะการอัปเดตสาธารณะ (Object obj) {system.out.println (obj.toString ()); // การเปลี่ยนแปลงที่เกิดขึ้น}}/*** concretewatched (); Observer obs1 = new specialwatcher (); Observer obs2 = new specialwatcher (); Observer obs3 = new specialwatcher (); bobs.addobserver (obs1); // เพิ่มวัตถุผู้สังเกตการณ์ bobs.addobserver (obs2); bobs.addobserver (obs3); bobs.notifyobservers ("*** แจ้ง ***"); System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ในที่สุดก็พิมพ์ผลลัพธ์:
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์สำหรับทุกคนในการเรียนรู้การเขียนโปรแกรม Java