mvl框架是基于mvc框架的变形,适配于我的编码习惯。
https://github.com/Finderchangchang/MVLDemo 本项目地址,将会持续更新
文件布局
ui:存放activity和fragment。
view:逻辑处理以后用于在activity或者fragment进行显示。
listener:activity的逻辑处理页面。其中这个MainMView其实也没什么实际的作用就是把主页面需要执行的操作先列出来然后在listener里面实现,这是我的理解。
可能会有人觉得这不是多此一举吗?直接在写方法多简单。你一个登录的逻辑不多,但是大项目中你就能发现这样封装一下的好处。
这个页面需要多说一句,为什么要把MainMView放在listener里面,而不是单独放在一个文件夹中(类似于mvvp框架的v)呢。
答:这样不是很清晰,我需要什么功能我一眼就可以看见,当然你也可以写到另外一个文件中。0.0
d.model就是存放model的没啥。
x2.使用方法
1.创建view文件夹的IMainView(你可以写成ILoginView,IDengLuView..)---注意这个是一个接口类型是interface.里面就写需要实现的方法。返回类型一版都是void,然后是方法名。括号里面是你返回页面的处理结果。(记得写备注)
2.创建MainListener(管理activity的页面)和MainMView(管理Mainlistener的方法的--目的:清晰明了)。
MainMview也是接口--interface类型的。里面的方法是页面传递给listener进行逻辑出的的参数(例:执行登录操作,你就把用户名密码传递过来,在listener进行实现再执行相关操作)。
MainListener继承自MainMView是为了实现他里面的方法。
再有就是为什么要重构MainListener--为了将listener逻辑处理的结果通过IMainView返回给activity。
3.activity的实现
activity重写的是IMainView就是咱第一个介绍的,一定要注意。
activity操作listener,执行登录操作
MainListener listener=new MainListener(this);--这里的this指的是IMainView..
登录--listener.login(name,pwd);
注册--listener.zhuce(name,pwd);
listener进行逻辑处理以后通过重写IMainView接口实现。即LoginRequest(boolean result);
整个mvl框架是为了让方便代码的维护还可以合理的分工。就不至于把所有的代码都写在activity中。增加代码的可阅读性。
最后再说一下IMainView和MainMView一定要区分开,前者是在activity进行实现的(是用来告诉activity处理结果的),后者是为了在listener中进行实现的。
文笔有限,如有什么疑问可加q群481606175一起探讨学习~~