浅谈MVP架构的实现方式(架构思想)

  • MVP模式
    - 谈起MVC模式可能大家都耳熟能详,最开始多用于web应用的开发,后在移动开发的过程中也引入了MVC,但是很多公司的项目在使用MVC的时候并没有很好的将三层解耦,很多的数据请求操作仍是在Activity里面执行,造成很多代码的可维护性仍然不高。
    - MVP模式的使用大大降低了mode和view之间的耦合度,方便应用的扩展。MVP结构中View和Model都通过Presenter来进行解耦。
    MVC模式结构
    MVP模式结构

项目主要实现的功能是展示一个列表数据,用不同的方式展示,一种是ListView的方式,一种是GridView的方式,项目结构通过对扩展开放对修改关闭,在不修改源代码的情况下修改展示方式。
这个是ListView的展示方式

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(new AvatarListAdapter(this, list));

    }

上面的是最基本的实现方式,接下来使用MVP来实现,在MVP模式中有三个角色,Model、View、Presenter,先从简单的Model开始,Model中所要做的工作就是获取数据,在实际开发中,最好有一个BaseModel的接口定义一些抽象方法,Demo中为了演示是从本地获取的数据,在实际的开发中则为网络数据加载。

BaseModel的代码:
public interface BaseModel
{
   
    //加载数据的方法,因为没有返回值所以在数据获取到之后需要回调
    void loadData(ResultCallBack callBack);

    /**
     * 加载完数据之后回调的函数
     */
    interface ResultCallBack
    {
   
        void onResult(List result);
    }
}

具体实现获取信息的model:
public class AvatarListModel implements BaseModel
{
   
    @Override
    public void loadData(ResultCallBack callBack)
    {
        List<AvatarBean> list = new ArrayList<AvatarBean>();
        list.add(new AvatarBean(R.mipmap.image_1,"XiaoMing"));
        list.add(new AvatarBean(R.mipmap.image_2,"XiaoMing"));
        list.add(new AvatarBean(R.mipmap.image_3,"XiaoMing"));
        list.add(new AvatarBean(R.mipmap.image_4,"XiaoMing"));
        list.add(new AvatarBean(R.mipmap.image_5,"XiaoMing"));
        list.add(new AvatarBean(R.mipmap.image_6,<
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值