java 之 观察者模式(大话设计模式)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 之 观察者模式(大话设计模式)相关的知识,希望对你有一定的参考价值。

观察者模式,笔者以前做校验订单时用过一次,只是不知道有这个模式,当时使用观察者省略了N多if else

在笔者看来观察者模式比较试用于一个对象状态改变后,很多个对象也要根据这个状态做相应的动作,当然观察者模式只是给大家开了一扇门,更希望的是灵活运用,而不是拘泥于细节,

我们可以从中汲取到把实现相同接口的类来放到集合里,然后便利集合调取公共方法去完成相应的工作,先看下类图

大话设计模式-类图

技术分享图片

基于类图笔者写了如下的简单的实例。

/**
 * 通知者抽象接口
 */
public interface INotify {

    public void notifySub();

    public void addSub(ISubject subject);

    public void removeSub(ISubject subject);
}
/**
 * 观察者抽象接口
 */
public interface ISubject {

    public void updateState(String state);
}
/**
 * 具体通知者
 */
public class Notify implements INotify {

    private List<ISubject> subjects = new ArrayList<>();

    @Override
    public void addSub(ISubject subject) {
        subjects.add(subject);
    }

    @Override
    public void removeSub(ISubject subject) {
        subjects.remove(subject);
    }

    @Override
    public void notifySub() {
        for (ISubject subject : subjects) {
            subject.updateState("下订单了");
        }
    }
}
/**
 * 具体观察者
 */
public class Subject implements ISubject {

    @Override
    public void updateState(String state) {
        System.out.println(state);
    }
}
/**
 * 客户端
 */
public class Test {

    public static void main(String[] args) {
        INotify notify = new Notify();
        notify.addSub(new Subject());
        notify.notifySub();
    }
}

 

运行结果:

下订单了

 

设计模式,能够优化我们的代码,解耦,易扩展,易维护,不过如果不能够理解设计模式的精髓所在,生搬硬套可能收不到理想的效果。

笔者认为,吸取设计模式的思想才是学习的关键。以上是笔者对观察者的理解,希望能帮助学习的小伙伴!

以上是关于java 之 观察者模式(大话设计模式)的主要内容,如果未能解决你的问题,请参考以下文章

《大话设计模式》——读后感 老板回来了,我不知道?——观察者模式之理论实例

《大话设计模式》——读后感 老板回来了,我不知道?——观察者模式之事件委托

大话设计模式-观察者模式(大鸟与小菜java版)

大话设计模式之观察者模式

java 之 状态模式(大话设计模式)

java 之 模板模式(大话设计模式)