看到别人的项目中用到观察者模式,虽然没有完全理解到设计思想,但是知道了如何使用这种模式,该模式可以及时更新数据,以后再代码中,不需要在使用接口回调,或者intent传递数据以下为一个代码示例:
Observer管理者:
public class ObserverManage extends Observable{ private static ObserverManage myObserver=null; public static ObserverManage getMyObserver(){ if (myObserver==null){ myObserver=new ObserverManage(); } return myObserver; } public void setMessge(Object data){ myObserver.setChanged(); myObserver.notifyObservers(data); } }
implements Observer更新数据:
public class MainActivity extends AppCompatActivity implements Observer{ TextView textView; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView=(TextView)findViewById(R.id.tv); btn=(Button)findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this,SecondActivity.class)); } }); ObserverManage.getMyObserver().addObserver(this); } @Override public void update(Observable observable, Object data) { if (data!=null){ if (data instanceof String){ textView.setText((String)data); } } } }
通知数据更新: