TommyLemon / Android-ZBLibrary

🔥 Android MVP 快速开发框架,做国内 「示例最全面」「注释最详细」「使用最简单」「代码最严谨」的 Android 开源 UI 框架。 🔥 An Android MVP Framework with many demos, detailed documents, simple usages and strict codes.
Apache License 2.0
5.5k stars 1.38k forks source link

这样的书写风格是? #6

Closed anybus closed 7 years ago

anybus commented 7 years ago

比如BottomTabActivity 继承 BaseBottomTabActivity 从而把 selectTab()、getTabIds()、getFragment ()这些个性化的方法暴露出来,父类调用子类实现来处理通用操作。

我注意到getTabIds专门处理数据;getFragment()负责创建新fragment;selectTab(int position)负责界面ui操作;

这就是mvp吗?

TommyLemon commented 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里都有用到。

TommyLemon commented 7 years ago

getTabIds,getFragment是BaseBottomTabActivity获取Model的方法,selectTab是BaseBottomTabActivity控制View显示的方法

anybus commented 7 years ago

嗯,受教了! 我模仿写了一个BaseMapActivity,把定位和传感器的代码放在父类,监听方法抽象出来给子类实现,代码明显清晰了很多。 对了,楼主能不能把地图方面的整理出来,感觉我写的代码好卡啊 我不知道怎么贡献代码,想让你帮我改改~

TommyLemon commented 7 years ago

@anybus 地图方面的整理出来是指提供一些地图使用资料?谷歌、百度、高德都有官方文档。 最后一句逻辑有点混乱啊,是指给GitHub上的开源库贡献代码吗?fork源码 > 修改代码 > 发pull request. 你可以新建一个repository,把代码上传上去,然后大家就可以按照以上的方式帮你修改并贡献代码。

TommyLemon commented 7 years ago

@anybus 对ZBLibrary内MVP的全新思考总结 https://github.com/TommyLemon/Android-ZBLibrary/wiki/架构、模式、技术