美文网首页
Android 进阶-设计模式-观察者模式

Android 进阶-设计模式-观察者模式

作者: 伊泽瑞额 | 来源:发表于2020-02-20 12:09 被阅读0次
观察者定义 :定义对象间一种一对多的依赖关系,使得每一个对象改变状态,则所有依赖于它的对象都会得到通知将被自动更新。
创建观察者
package com.amn.amn.ndk_02.design_patterns;
/**
 * 观察者:定义了一个update()方法,当被观察者调用notifyObservers()方法时,观察者的update()方法会被回调。
 */
public interface Observer<T> {
    public void update(T t);
}

创建被观察者
package com.amn.amn.ndk_02.design_patterns;

/**
 * 被观察者 :声明了添加、删除、通知观察者方法
 */
public interface Observerable {
    public void registerObserver(Observer o);

    public void removeObserver(Observer o);

    public void notifyObserver();
}

创建观察者实现类
package com.amn.amn.ndk_02.design_patterns;

import android.util.Log;

public class ObserverImpl01<T> implements Observer<T> {

    @Override
    public void update(T o) {
        Log.i("TAG","ObserverImpl01>>"+ o);
    }
}


package com.amn.amn.ndk_02.design_patterns;

import android.util.Log;

public class ObserverImpl02<T> implements Observer<T> {

    @Override
    public void update(T o) {
        Log.i("TAG","ObserverImpl02>>"+ o);
    }
}

创建被观察者实现类
package com.amn.amn.ndk_02.design_patterns;

import java.util.ArrayList;
import java.util.List;
import java.util.PropertyResourceBundle;

public class ObserverableImpl<T> implements Observerable {


    private List<Observer> observerList;

    private T t;

    public  ObserverableImpl(){
        observerList=new ArrayList<>();
    }


    /**
     * 注册/添加观察者
     */
    public void registerObserver(Observer observer){
        observerList.add(observer);
    }

    /**
     * 注销被观察者
     */
    public void removeObserver(Observer observer){
        observerList.remove(observer);
    }


    /**
     * 通知观察者更新数据
     */
    public void notifyObserver(){
        for (Observer observer :observerList){
            observer.update(t);
        }
    }

   public void setInfomation(T t){
        this.t=t;
       notifyObserver();
   }

}
使用
        ObserverableImpl<Object> observerable = new ObserverableImpl<>();
        observerable.registerObserver(new ObserverImpl01());
        observerable.registerObserver(new ObserverImpl02());
        observerable.setInfomation("java 是世界上最好的语言");



2019-11-08 11:11:45.211 16509-16509/com.amn.amn.ndk_02 I/TAG: ObserverImpl01>>java 是世界上最好的语言
2019-11-08 11:11:45.211 16509-16509/com.amn.amn.ndk_02 I/TAG: ObserverImpl02>>java 是世界上最好的语言

相关文章

  • 流行框架源码分析(12)-Observer观察者设计模式

    主目录见:Android高级进阶知识(这是总目录索引)这篇文章我们会来讨论另外一个设计模式观察者设计模式,这个设计...

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

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

  • Android 观察者模式

    Android 设计模式系列文章 Android 23种设计模式 前言 观察者模式是我们使用率比较高的一种模式了。...

  • 观察者模式

    Android进阶之设计模式 观察者模式 定义: 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • Android 进阶-设计模式-观察者模式

    观察者定义 :定义对象间一种一对多的依赖关系,使得每一个对象改变状态,则所有依赖于它的对象都会得到通知将被自动更新...

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • RxJava基础—观察者模式

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

  • 设计模式详解——观察者模式

    本篇文章介绍一种设计模式——观察者模式。观察者模式在Android中有着很多的应用,如按钮监听,接口回调以及很多流...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

网友评论

      本文标题:Android 进阶-设计模式-观察者模式

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