前言:
- 初识MVP模式时,看到它缺点是需要增加一倍的类的维护量。所以就暂时没用它。但是,当一个类的代码行数达到一定的量(1000行以上),这时候维护类变得好麻烦,主要是功能变得多了,方法数量也变多了。这个时候真的是需要给类“瘦瘦身”。
- 这时候重新看了MVP模式,确实发现了“宝”。
一、简单定义
Model层:将功能逻辑等封装才model层中,其中包括了Data的交互(数据库、网络等),一般用作为接口实现来给Presenter层调用。
View层:一般是Activity或fragment,主要是封装好用于交互界面用的方法,也是一般用作为接口实现来给Presenter层调用和调用Presenter反馈界面交互。
Presenter层:我认识它是作为MVP模式中关键的一层,用户交互的操作通过View层传到这里,Presenter调用Model层和View层的方法来完成功能的流程(我们可以理解View层和Model层的方法大部分都不会在自己内部被调用,而是通过实例被Presenter层调用),然后通过View层反馈给用户。
二、使用一个简单的例子来实现一下
这里我们写个简单计算器的Demo来实现下。
Model层
先定义接口,这里我们写的方法都是功能逻辑的处理。
1 | public interface CalcModel |
写实现类,与该层中没有持有其他层的引用。
1 | public class CalcModelImpl implements CalcModel |
View层
同样,先写接口,这里我写的方法都是和界面交互相关的。
1 | public interface CalcView |
再写实现类(Activity),持有Presenter的引用。
1 | public class MainActivity extends Activity implements CalcView,View.OnClickListener |
Presenter层
写接口类,一般为调用Model和View的方法。
1 | public interface CalcPresenter |
写实现类,Presenter持有View与Model的引用。
1 | public class CalcPresenterImpl implements CalcPresenter |
运行
总结与思考
关于Presenter持有Model与View的引用,还有View层持有Presenter的思考。这里我觉得可以,将实例化用静态工厂模式的方式来创建实例,会比较好些。