เมนูนำทาง
อ็อบเซิร์ฟเวอร์แพตเทิร์น ตัวอย่างโปรแกรมตัวอย่างโปรแกรมจำลองการทำงานของผู้พิมพ์หนังสือพิมพ์และผู้รับหนังสือพิมพ์ที่มีการทำงานในแบบอ็อบเซิร์ฟเวอร์แพตเทิร์น
อินเตอร์เฟส Publisher
public interface Publisher { public void subscribe(Subscriber subscriber); public void remove(Subscriber subscriber); public void publish();}
คลาส NewspaperPublisher
import java.util.ArrayList;public class NewspaperPublisher implements Publisher { private ArrayList<Subscriber> subscribers = new ArrayList<Subscriber>(); public void subscribe(Subscriber subscriber) { subscribers.add(subscriber); } public void remove(Subscriber subscriber) { subscribers.remove(subscriber); } public void publish() { Publisher pub = new NewspaperPublisher(); for (Subscriber subscriber : subscribers) { subscriber.receive(pub); } }}
อินเตอร์เฟส Subscriber
public interface Subscriber { public void receive(Publisher publication);}
คลาส Reader
public class Reader implements Subscriber { private String name; public Reader(String name) { this.name = name; } public void receive(Publisher publication) { System.out.println(name + " received " + publication); }}
การเรียกใช้งาน
public class PublishSubscribeTest { public static void main(String[] args) { Reader reader1 = new Reader("reader 1"); Reader reader2 = new Reader("reader 2"); Publisher publisher = new NewspaperPublisher(); publisher.subscribe(reader1); publisher.subscribe(reader2); publisher.publish(); }}
ผลการรัน
reader 1 received NewspaperPublisher@6b97fdreader 2 received NewspaperPublisher@6b97fd
เมนูนำทาง
อ็อบเซิร์ฟเวอร์แพตเทิร์น ตัวอย่างโปรแกรมใกล้เคียง
อ็อบเจกทีฟ-ซี อ็อบเซิร์ฟเวอร์แพตเทิร์น อ็องเดร ดูว์ แปลซี เดอ รีเชอลีเยอ อ็องเดร ออนานา อ็องเดรเดอะไจแอนต์ อ็องเดรเดอะไจแอนต์ เมโมเรียล แบตเทิลรอยัล อ็อนเดรย์ ดูดา อ็องเดร-มารี อ็องแปร์ อ็องเรียต มารีแห่งฝรั่งเศส อ็องเฌแหล่งที่มา
WikiPedia: อ็อบเซิร์ฟเวอร์แพตเทิร์น http://www.javaworld.com/javaworld/jw-03-2003/jw-0...