ตัวอย่างโปรแกรม ของ อ็อบเซิร์ฟเวอร์แพตเทิร์น

ภาษาจาวา

ตัวอย่างโปรแกรมจำลองการทำงานของผู้พิมพ์หนังสือพิมพ์และผู้รับหนังสือพิมพ์ที่มีการทำงานในแบบอ็อบเซิร์ฟเวอร์แพตเทิร์น

อินเตอร์เฟส 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

ใกล้เคียง

อ็อบเจกทีฟ-ซี อ็อบเซิร์ฟเวอร์แพตเทิร์น อ็องเดร ดูว์ แปลซี เดอ รีเชอลีเยอ อ็องเดร ออนานา อ็องเดรเดอะไจแอนต์ อ็องเดรเดอะไจแอนต์ เมโมเรียล แบตเทิลรอยัล อ็อนเดรย์ ดูดา อ็องเดร-มารี อ็องแปร์ อ็องเรียต มารีแห่งฝรั่งเศส อ็องเฌ