??????????????????????дUI?????????????????????????????????Presenter??????????????????????????????????UI???????????????????????Presenter??????
????public class Presenter {
????private IInfoModel infoModel;
????private IInfoView infoView;
????public Presenter(IInfoView infoView) {
????this.infoView = infoView;
????infoModel = new InfoModelImpl();
????}
????//??UI????
????public void saveInfo(InfoBean bean) {
????infoModel.setInfo(bean);
????}
????//??UI????
????public void getInfo() {
????//???????IInfoView?????????????????????????
????//??????????????
????infoView.setInfo(infoModel.getInfo());
????}
????}
????????????????View?????View??????????View???????????????Activity????UI View????
????????????View?????????
????public class MainActivity extends ActionBarActivity implements IInfoView?? View.OnClickListener{
????private EditText inputId?? inputName?? inputAddr;
????private Button saveBtn?? loadBtn;
????private TextView infoTxt;
????private Presenter presenter;
????@Override
????protected void onCreate(Bundle savedInstanceState) {
????super.onCreate(savedInstanceState);
????setContentView(R.layout.activity_main);
????initData();
????}
????private void initData() {
????presenter = new Presenter(this);
????inputId = (EditText) findViewById(R.id.id_input);
????inputName = (EditText) findViewById(R.id.name_input);
????inputAddr = (EditText) findViewById(R.id.addr_input);
????saveBtn = (Button) findViewById(R.id.input_confirm);
????loadBtn = (Button) findViewById(R.id.get_confirm);
????infoTxt = (TextView) findViewById(R.id.show);
????saveBtn.setOnClickListener(this);
????loadBtn.setOnClickListener(this);
????}
????@Override
????public void setInfo(InfoBean info) {
????StringBuilder builder = new StringBuilder("");
????builder.append(info.getId());
????builder.append(" ");
????builder.append(info.getName());
????builder.append(" ");
????builder.append(info.getAddress());
????infoTxt.setText(builder.toString());
????}
????@Override
????public InfoBean getInfo() {
????InfoBean info = new InfoBean();
????info.setId(Integer.parseInt(inputId.getText().toString()));
????info.setName(inputName.getText().toString());
????info.setAddress(inputAddr.getText().toString());
????return info;
????}
????@Override
????public void onClick(View v) {
????switch (v.getId()) {
????case R.id.input_confirm:
????presenter.saveInfo(getInfo());
????break;
????case R.id.get_confirm:
????presenter.getInfo();
????break;
????}
????}
????}
????????????п?????App??????????????????????н????

????????????????????????????
???????
???????????????????????View??Activity?????????????????????????????????????????????Presenter???????Presenter????Model??????????????????View??????????View????????????????????????????UI???????????
??????????????????????App???????????????????????????С??App?????????????????App??????????????????????????????????????????дtest???????