我们再来看下代码的具体实现: 源码点击这里(移步GitHub) 1.一个Observable接口及其实现类 public interface IObservable { //增加观察者 void addObserver(IObserver observer); //删除观察者 void remove(IObserver observer); //通知所有的观察者 void notifyObservers(String content); //自身的操作 void operation(String content); } public abstract class AObservable implements IObservable { //观察者的集合 private ArrayList observers = new ArrayList<>(); //添加观察者到集合 @Override public void addObserver(IObserver observer) { observers.add(observer); } //从集合中删除观察者 @Override public void remove(IObserver observer) { if(observers.contains(observer)) { observers.remove(observer); } } //通知所有的观察者 @Override public void notifyObservers(String content) { for (IObserver observer : observers) { observer.update(content); } } } 2.ConcreteObservable public class ConcreteObservable extends AObservable { private static ConcreteObservable observable; //单例 public static ConcreteObservable getInstance(){ if(null == observable) { synchronized (AObservable.class){ if( null == observable) { observable = new ConcreteObservable(); } } } return observable; } @Override public void operation(String content) { notifyObservers(content); } } 3.一个Observer接口 public interface IObserver { //刷新数据 void update(String content); } 4.ConcreteObserver public class MainActivity extends AppCompatActivity implements IObserver{ TextView tv_main; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_main = (TextView)findViewById(R.id.tv_main); findViewById(R.id.btn_main).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }); //添加观察者到被观察者的被订阅列表,简称:订阅 ConcreteObservable.getInstance().addObserver(this); } @Override public void update(String content) { tv_main.setText(content); } } public class SecondActivity extends AppCompatActivity implements IObserver{ TextView tv_second; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); tv_second = (TextView)findViewById(R.id.tv_second); findViewById(R.id.btn_second).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(SecondActivity.this,ThirdActivity.class); startActivity(intent); } }); //订阅 ConcreteObservable.getInstance().addObserver(this); } @Override public void update(String content) { tv_second.setText(content); } } public class ThirdActivity extends AppCompatActivity implements IObserver { TextView tv_third; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); tv_third = (TextView)findViewById(R.id.tv_third); findViewById(R.id.btn_third).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //被观察者有了动作 ConcreteObservable.getInstance().operation("数据被刷新了"); } }); //订阅 ConcreteObservable.getInstance().addObserver(this); } @Override public void update(String content) { tv_third.setText(content); } }