复习:观察者模式

    观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。




图1:观察者模式

 

代码实现:

1. Observer接口

public interface Observer {

    void watch(String message);
}

 

2. Subject接口

package cn.lettoo.observe;

public interface Subject {

    void addObserver(Observer observer);

    void deleteObserver(Observer observer);

    void notifyObservers();
}

 

3. Observer实现类A:

package cn.lettoo.observe;

public class ObserverA implements Observer {

    @Override
    public void watch(String message) {
        System.out.println(String.format("This is observer A watching the message: %s", message));
    }
}

 

4. ObserverB,代码略

 

5. SubjectA实现Subject接口:

package cn.lettoo.observe;

import java.util.HashSet;
import java.util.Set;

public class SubjectA implements Subject {

    Set<Observer> observers = new HashSet<Observer>();

    @Override
    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void deleteObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.watch("MessageA");
        }
    }

}

 

6. 调用代码:

package cn.lettoo.observe;

public class Client {

    public static void main(String[] args) {
        Observer a = new ObserverA();
        Observer b = new ObserverB();

        Subject subject = new SubjectA();
        subject.addObserver(a);
        subject.addObserver(b);

        subject.notifyObservers();
    }
}

 

运行结果
This is observer A watching the message: MessageA
This is observer B watching the message: MessageA
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值