浅谈架构的基础MVC

前言:

在实际项目开发过程中,为了降低代码的耦合度,我们会选用一个架构去达到这个目的,但是我们再使用这些架构的过程中一定要明白我们所使用的架构的核心思想,本文主要针对我们最基础的mvc架构做下讨论,后来出现的mvp,mvvm都是在mvc的基础上演变过来的;如果有不严谨的地方,请多包涵

一 :首先来看mvc:

       mvc的分层是  :Model-View-Control

       model:它主要负责网络请求,数据库操作,针对业务模型,建立的数据结构,

       view:  对应xml文件中的布局文件,以及在代码中动态控制view的部分

       control:对应于android中的activity,主要负责数据的展示和页面的初始化

       在android项目的mvc架构中,view 和control不太好彻底解耦,大部分都是由activity承担了这两层的角色;

      下面我们通过代码来看下mvc的实现方式:

       public interface BaseModel {

           void onDestroy();

       }

      通过类名可以知道BaseModel这是所有model的基类,onDestroy主要做一些销毁的逻辑,类似于activity中的onDestory

     public interface Callback<T> {

            void   CallBack(T t);

     }  

    Callback接口主要是把model回调出去供其他层使用

   下面的TestModel是具体的实现model

public class TestModel implements BaseModel{

    public void  getUserBean(String id,Callback1<UserBean > callback)
    {

        UserBean userBean= new BaseRestApi(SeverUrl.SHOPGOODSLIST, 
                 RestApi.HttpMethod.POST);
        callback.onCallBack(userBean);

    }

    @Override
    public void onDestroy() {

    }

    public class UserBean 
    { 
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

    我们来看在activity中的使用:

public class TestActivity extends AppCompatActivity {
    private TestModel testModel;
    TextView nameTv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        testModel=new TestModel ();
        getUser(textView.getText().toString());
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        testModel.onDestroy();
    }


    private void getUser(String id)
    {
        testModel.getUserBean(uid, new Callback<TestModel.UserBean>() {
            @Override
            public void onCallBack(SampleModel.UserInfo userInfo) {
                setView(userInfo);
            }
        });
    }

    private void setView(TestModel.UserBean userBean)
    {
        nameTv.setText(userBean.getName());
    }

}

      可以看到avtivity中既有负责view显示的代码,也有负责控制逻辑的代码,所以我们要分清楚哪些代码是controller控制的,哪       些代码是view的操作;

    mvc架构在很长一点时间深受开发者喜爱,因为把model层彻底解耦出来,减少了activity的负担,但是control和view层还是有      一 定程度的耦合度,无法做到彻底分离,所有就有了后续的mvp,mvvm架构的出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值