**
1、抽象主题 : Subject 2、具体主题 :ConcreteSubject 3、抽象观察者:Observer 4、具体观察者:ConcreteObserver **
然后定义一个具体的主题角色,在里面声明方法添加、删除、通知观察者
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(); } }