Closed anybus closed 7 years ago
@anybus 这是用了java的封装(BaseBottomTabActivity)、继承(BottomTabActivity extends BaseBottomTabActivity)、多态(abstract方法及interface)的特性。 MVP,即Model-View-Presenter,是一种用于把业务、UI分离,使结构清晰、使用灵活的设计模式。 你提的这个例子不是一个单纯的MVP, 可以把Fragment当成Model,是FragmentContainer里呈现的内容数据; BottomTabActivity当成View,负责界面渲染; BaseBottomTabActivity当成Presenter,负责通用的tab逻辑处理。
Activity、Fragment采用了MVC的设计模式,所以基于它们做出来的脱离不了MVC,最多是多种设计模式混用。
可以看下ZBLibrary里的UserView,User是Model,UserView是View, BaseView是Presenter。UserActivity和UserAdapter里都有用到。
getTabIds,getFragment是BaseBottomTabActivity获取Model的方法,selectTab是BaseBottomTabActivity控制View显示的方法
嗯,受教了! 我模仿写了一个BaseMapActivity,把定位和传感器的代码放在父类,监听方法抽象出来给子类实现,代码明显清晰了很多。 对了,楼主能不能把地图方面的整理出来,感觉我写的代码好卡啊 我不知道怎么贡献代码,想让你帮我改改~
@anybus 地图方面的整理出来是指提供一些地图使用资料?谷歌、百度、高德都有官方文档。 最后一句逻辑有点混乱啊,是指给GitHub上的开源库贡献代码吗?fork源码 > 修改代码 > 发pull request. 你可以新建一个repository,把代码上传上去,然后大家就可以按照以上的方式帮你修改并贡献代码。
@anybus 对ZBLibrary内MVP的全新思考总结 https://github.com/TommyLemon/Android-ZBLibrary/wiki/架构、模式、技术
比如BottomTabActivity 继承 BaseBottomTabActivity 从而把 selectTab()、getTabIds()、getFragment ()这些个性化的方法暴露出来,父类调用子类实现来处理通用操作。
我注意到getTabIds专门处理数据;getFragment()负责创建新fragment;selectTab(int position)负责界面ui操作;
这就是mvp吗?