观察者模式

    xiaoxiao2021-12-14  39

    一个简单的观察者模式

    定义:观察者模式定义了一种一对多的的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变的时候,会通知所有的观察者对象,使他们能够自己更新自己。

    **

    模式中的角色

    1、抽象主题 : Subject 2、具体主题 :ConcreteSubject 3、抽象观察者:Observer 4、具体观察者:ConcreteObserver **

    具体的程序代码

    //抽象的主题 public interface Subject { /** * 添加观察者 * @param o */ void addObserver(Observer o); /** * 删除观察者 * @param o */ void removeObserver(Observer o); /** * 通知所有的观察者 */ void notifyAllObserver(); }

    然后定义一个具体的主题角色,在里面声明方法添加、删除、通知观察者

    public class Subjectmpl implements Subject { ArrayList<Observer> ObserverList; ArrayList<String> jobList; public Subjectmpl(){ ObserverList=new ArrayList<Observer>(); jobList=new ArrayList<String>(); } @Override public void addObserver(Observer o) { ObserverList.add(o); } @Override public void removeObserver(Observer o) { ObserverList.remove(o); } @Override public void notifyAllObserver() { for(Observer o:ObserverList){ //通知每一个观察者的方法 o.update(); } } }

    下来就是抽象的观察者

    public interface Observer { void update(); }

    最后具体的观察者

    public class Observermpl implements Observer{ private String name; public Observermpl(String name){ this.name=name; } @Override public void update() { Log.e("zhangy",name+"我被通知了"); } }

    最后的调用

    public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Subjectmpl subjectmpl=new Subjectmpl(); subjectmpl.addObserver(new Observermpl("zhangy")); subjectmpl.addObserver(new Observermpl("zhanghh")); subjectmpl.addObserver(new Observermpl("czx")); subjectmpl.notifyAllObserver(); } }
    转载请注明原文地址: https://ju.6miu.com/read-962844.html

    最新回复(0)