MVC MVP 和MVVM

MVC  

View(视图):界面,展示界面,将用户事件通知给控制器

Controller(控制器:负责调度事件

Model(模型):数据和与数据的相关的业务逻辑。具体的操作数据,通知给view进行数据显示

 代码实现:

public class MvpDemo {
    class Model{//模型
        int data;
        View mView;
        void dataAll(int data1){
            data = data1;
            mView.showData(data);//数据和与数据的相关的业务逻辑。具体的操作数据,通知给view进行数据显示
        }
    }
    class View{
        Controller mController;
        //View 进行数据的展示
        void showData(int data){
            ...
        }
        void clicked(){
            //通知控制器进行事件操作
            mController.viewClicked(this);
        }
    }
    class Controller{
        Model model;
        void viewClicked(View view){
            switch (view.id){
                case ..:
                    //控制器进行事件调度,具体操作由Model实现
                    model.dataAll(1);
            }
        }
    }
}

演示代码的界面均为上图。

1 常见的MVC模式实现代码

//Model
class DataUtils {

    public static String[] load() {
        String[] str = {"这是账号", "这是密码"};
        return str;
    }
}

传递机制不符合通常的View->Controler->Model->View但也属于MVC.

2 下面的实现方式符合View->Controler->Model->View的交互方式

public class MyLinearLayout extends LinearLayout implements MainActivity.iView{
    private EditText mUser;
    private EditText mPassword;

    public MyLinearLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        mUser = findViewById(R.id.user);
        mPassword =findViewById(R.id.password);

    }
    @Override
    public void showData(String user,String passWord){
        mUser.setText(user);
        mPassword.setText(passWord);
    }
}
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyLinearLayout myView = findViewById(R.id.myview);

        String[] load = DataUtils.load();
        myView.showData(load[0],load[1]);
    }
    interface iView{
       void showData(String user,String passWord);
    }
}

MVC模式每层的关联性太强,没有做到独立的重用。

MVP

MVVM

双向绑定,暂时不表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值