MvpHelper English Document

注意! 你正在阅读一篇转载自 GitHub 的文章, 请注意时效性. 该博客并不周期性维护, 一切内容应以 GitHub 仓库 为准.

一款适用于 Intellij IDEAAndroid Studio 的插件, 可用于为MVP架构生成接口以及实现类, 解放双手.

分支自 https://github.com/githubwing/MVPHelper, 并基于个人需求重写实现方式

欢迎 Issue Report, 欢迎 Feature Request, 欢迎 Pull Request.

本博客站点已全量迁移至 DevDengChao 的博客 https://blog.dengchao.fun , 后续的新内容将优先在自建博客站进行发布, 欢迎大家访问.

预览

Contract模式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pnw2Y98O-1630746586974)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master/img/mode_contract.gif?raw=true)]

Presenter模式 (已设置后缀Impl):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szpa3719-1630746586975)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master/img/mode_presenter.gif?raw=true)]

后缀支持:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a64lfdmc-1630746586977)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master/img/suffix_support.gif?raw=true)]

错误提示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NL5dYqXM-1630746586978)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master/img/error_package.gif?raw=true)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3NxxNz7-1630746586980)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master/img/error_class_name.gif?raw=true)]

注意

对于 MVP 模式, 定义一个 Contract 类来放置 Model, View, Presenter 的接口, 将大大减少类文件的数量.

例如:

public interface GoodsInfoContract {
    interface View {}
    interface Presenter {}
    interface Model {}
}

如何安装

方式一: 通过 IDEA 插件管理器安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ZFM9kbH-1630746586980)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master/img/install_repositories.png?raw=true)]

方式二: 手动安装

第一步

下载 MvpHelper_v2_1_release.jar
或者前往 releases 页面下载其他发行版.

第二步

安装插件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMPZFaLW-1630746586981)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master/img/install_local.png?raw=true)]

如何使用

Contract 类或者 Presenter 类内部, 点击 Generate 菜单或使用快捷键 Alt + Insert, 选择 Mvp Helper 即可生成对应文件.

已知特性

  • 移除快捷键 Meta + 1

  • 在非 Java 源文件中使用快捷键 Alt + Insert 时, MvpHelper 菜单将不再出现

  • 不再限制根目录包名

  • 不再将 contract 包限制在根目录下, 并且支持 sub-package
    例如:

    com.example.project.package1.contract.package2.AContract
    将会生成 com.example.project.package1.model.package2.AModel
    以及 com.example.project.package1.presenter.package2.APresenter

  • AContract 位于 presenter 包下时将会出现错误提示而非继续生成错误的类

  • 支持 File Header Template

  • 已实现 Contract 模式

    • Contract 所处的位置中必须有至少一个包以 contract 结尾
    • 强制 Contractinterface 类型
    • Contract 中的三个接口不包含多余的修饰符
    • 重复生成将删除旧文件并重新生成
  • 已实现 Presenter 模式

    • Presenter 所处的位置中必须有至少一个包以 presenter 结尾
    • Presenter 中启动插件将复刻 Contract 模式下的实现方式
    • Presenter 模式在自定义后缀的情况下不会删除原有 Presenter, 因此我们建议使用Contract 模式

TODO

  • 实现 Activity模式
  • 实现 Fragment模式
  • 将生成的文件自动添加到 Git (考虑到要进一步学习Git的命令行语法等相关内容, 可能会鸽)

参考资源

更新日志

v2.x版 - 基于Intellij Open Api 实现 by DevDengChao

  • 2017-04-25
    • 实现配置信息的存取
    • 实现运行时加载配置信息
    • 发布 MvpHelper_v2_0_release.jar
    • 追加 用户指导.gif
    • 原仓库 请求合并
    • Android Studio 环境下测试 Java 项目与 Android 项目
    • 修复Merge后造成的 Contract 修饰符异常,强制生成后的 Contractpublic interface PrefixContract
    • 修复配置面板在销毁时触发的 AbstractMethodException
    • 发布 MvpHelper_v2_1_release.jar
  • 2017-04-24
    • 实现配置面板布局
    • 实现 Presenter 模式下的包生成类 PresenterModeDirGenerator
    • 抽取各功能实现类接口,重新分包
    • 基于 Intellij Open Api 更新 Contract 而非以替换文本的方式更新
      • 强制 Contractinterface
      • 移除 Contract 中接口的多余修饰符 public
  • 2017-04-23
    • 实现在指定包下生成类文件, 并注入包信息
    • 实现让生成类实现特定接口
    • 更新 README.CN.MD
  • 2017-04-15 更新对当前环境的判定规则
  • 2017-04-12 实现 Action 的可见性判定, 当用户尝试通过 Alt + Insert 启动插件时,
    将判断当前环境是否为 Java 源文件环境, 当条件不成立时将不再显示插件动作
  • 2017-04-11 实现 DirGeneratorFileGenerator 用于分别生成 packageclass
  • 2017-04-10 实现 EnvironmentChecker 用于检查当前环境是否满足生成条件:
    • Java源文件的文件名是否以 Contract 结尾, 并处于 contract 包下
    • Java源文件的文件名是否以 Presenter 结尾, 并处于 presenter 包下

v1.1版 - 基于Java IO Api 实现 by githubwing

  • 2017-04-10 将源文件分包并尝试重构
  • 2017-04-09 移除源文件中的 C 语言异味
  • 2017-04-06 分支自 原仓库, 并向源文件中追加注释, 以便阅读

For Eclipse

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MB9rHumg-1630746586982)(https://hub.fastgit.org/DevDengChao/MVPHelper/blob/master//img/go_home_you_are_drunk.png?raw=true)]

License

Copyright 2016 androidwing1992

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐