美文网首页
观察者模式

观察者模式

作者: OakesYa | 来源:发表于2020-05-29 15:50 被阅读0次

背景

在许多公共工具中我们可能听说过一个函数叫回调函数,回调函数就是被传入然后再调用的函数,观察者模式传入一个观察者,然后有变化的时候会再调用一下观察者执行任务,那我们就来写一个消费者观察厂商是否出新品,厂商有新品的时候消费者就会购买的代码实例

代码实例

//定义一个消费者接口
public interface Consumer {
    /**
     * 购买行为
     */
    void buy();
}

//定义厂家
public class Producter {
    private List<Consumer> consumerList = new ArrayList<>();
    //增加消费者作为观察者
    public void addConsumer(Consumer consumer) {
        consumerList.add(consumer);
    }
    
    public void startSelling() {
        for (Consumer consumer : consumerList) {
            consumer.buy();
        }
    }
}

//定义一个普通消费者
public class NormalConsumer implements Consumer {
    @Override
    public void buy() {
        System.out.println("普通消费者买一个!");
    }
}

//定义一个特殊消费者
public class SpecialConsumer implements Consumer {
    @Override
    public void buy() {
        System.out.println("特殊消费者买好多个!");
    }
}

上面就会发现当厂家自己开始售卖的时候,作为观察者的消费者就会开始执行购买操作。我们开下执行结果

public class ConsumerTest {
    public static void main(String[] args) {
        Producter producter = new Producter();
        //添加两个观察者
        producter.addConsumer(new NormalConsumer());
        producter.addConsumer(new SpecialConsumer());

        producter.startSelling();
    }
}

执行结果如图所示



上面就是一个完整的观察者模式案例。本质就是回调函数的使用。

相关文章

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 前端面试考点之手写系列

    1、观察者模式 观察者模式(基于发布订阅模式) 有观察者,也有被观察者。 观察者需要放到被观察者列表中,被观察者的...

  • RxJava 原理篇

    一、框架思想 观察者模式观察者自下而上注入被观察者被观察者自上而下发射事件观察者模式 装饰器模式自上而下,被观察者...

  • 观察者模式

    观察者模式概念 观察者模式是对象的行为模式,又叫作发布-订阅(publish/subscrible)模式。 观察者...

  • 设计模式-观察者模式

    观察者模式介绍 观察者模式定义 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为...

  • 观察者模式

    观察者模式 观察者模式的定义 观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/s...

  • iOS设计模式之观察者模式

    观察者模式 1、什么是观察者模式 观察者模式有时又被称为发布(publish)-订阅(Subscribe)模式、模...

  • 观察者模式和发布订阅模式区别

    观察者模式 所谓观察者模式,其实就是为了实现松耦合(loosely coupled)。 在观察者模式中,观察者需要...

  • RxJava(二)

    一、观察者模式 1.1、传统的观察者模式 1.2、RxJava 的观察者模式 区别传统的观察者模式是一个 Obse...

网友评论

      本文标题:观察者模式

      本文链接:https://www.haomeiwen.com/subject/ohzoahtx.html