跳至主要內容

设计模式-行为型-观察者模式

引领潮流小于 1 分钟设计模式archive

1、定义

观察者模式:对象间一对多依赖关系,一个对象改变,依赖于它对象得到通知并更新

写法

/**
 * 被观察者
 */
public interface IObservable {
    //注册
    void register(IObserver observer);
    //通知
    void notify(String msg);

}

/**
 * 观察者
 */
public interface IObserver {
    //更新
    void update(String msg);
}

public class Tv implements IObservable {

    List<IObserver> list = new ArrayList<>();

    @Override
    public void register(IObserver observer) {
        list.add( observer );
    }

    @Override
    public void notify(String msg) {
        for (IObserver observer : list) {
            observer.update( msg );
        }
    }
}

/**
 * 观察者
 */
public class User implements IObserver {

    private String name;

    public User(String name) {
        this.name = name;
    }

    @Override
    public void update(String msg) {
        System.out.println( name + "," + msg + "更新了!" );
    }

}

public class TestMain {

    public static void main(String[] args){

        User user1 = new User( "小米" );
        User user2 = new User( "小名" );
        User user3 = new User( "小明" );

        Tv tv = new Tv();
        tv.register( user1 );
        tv.register( user2 );
        tv.register( user3 );

        tv.notify( "甄嬛来了" );
    }

}

代码示例

https://github.com/yinlingchaoliu/23-design-pattern