package com.example.hujhguiyhiu.test_demo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import java.io.Console; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Observable; import java.util.Observer; public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); //创建一个通知者 TongZhiZhe daDa = new TongZhiZhe(); NBA me = new NBA("小小", daDa); daDa.Attach(me); daDa.action = "爸妈回来了"; daDa.Notify(); } //具体的观察者 class NBA extends Observer { public NBA(String name, Subject sub) { super(name, sub); } @Override public void Update() { tv.setText(sub.SubjectState() + name + "快关闭NBA,去做作业"); } } //具体的通知者 class TongZhiZhe implements Subject { public List<Observer> observers = new ArrayList<>(); private String action; @Override public void Attach(Observer observer) { observers.add(observer); } @Override public void Detach(Observer observer) { observers.remove(observer); } @Override public void Notify() { for (Observer a : observers ) { a.Update(); } } @Override public String SubjectState() { return action; } } //观察者抽象,重写Observer类 abstract class Observer { protected String name; protected Subject sub; public Observer(String name, Subject sub) { this.name = name; this.sub = sub; } public abstract void Update(); } //通知者接口 interface Subject { //添加 void Attach(Observer observer); //删除 void Detach(Observer observer); //通知 void Notify(); // String SubjectState(); ; } }