CN111782196A - 基于mvp架构的开发方法及装置 - Google Patents

基于mvp架构的开发方法及装置 Download PDF

Info

Publication number
CN111782196A
CN111782196A CN202010649456.6A CN202010649456A CN111782196A CN 111782196 A CN111782196 A CN 111782196A CN 202010649456 A CN202010649456 A CN 202010649456A CN 111782196 A CN111782196 A CN 111782196A
Authority
CN
China
Prior art keywords
file
view
presenter
layer
view file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010649456.6A
Other languages
English (en)
Inventor
王永喜
闫心现
徐燕超
王鹏飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Qianzhen Information Technology Co ltd
Original Assignee
Shanghai Qianzhen Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Qianzhen Information Technology Co ltd filed Critical Shanghai Qianzhen Information Technology Co ltd
Priority to CN202010649456.6A priority Critical patent/CN111782196A/zh
Publication of CN111782196A publication Critical patent/CN111782196A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Abstract

本申请提供了一种基于MVP架构的开发方法及装置、电子设备、计算机可读存储介质,所述MVP架构包括Model层、View层和Presenter层,所述Presenter层用于实现所述Model层和所述View层之间的通信,所述方法包括:响应于第一View文件的调用,生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件;为所述第一View文件添加所述第一Presenter文件的依赖关系。在开发人员创建View文件之后,响应于View文件的调用,动态生成Presenter文件,动态注册View文件,自动为View文件添加Presenter文件依赖关系,由此动态生成MVP文件结构并自动维护对应文件之间的依赖关系,上述步骤自动执行,避免重复操作浪费开发人员时间和精力,提高开发效率。

Description

基于MVP架构的开发方法及装置
技术领域
本申请涉及信息处理的技术领域,尤其涉及基于MVP架构的开发方法及装置、电子设备、计算机可读存储介质。
背景技术
MVP,即Model View Presenter,分别表示数据层、视图层和发布层,是MVC架构的一种演变。MVP与MVC的区别是:在MVP中View层并不直接使用Model层,View层和Model层之间的通信是通过Presenter层(相当于MVC中的Controller层)来进行的,所有的交互都发生在Presenter层内部,而在MVC中View层会直接从Model层中读取数据而不是通过Controller层。MVP分离了View层和Model层,Presenter层充当桥梁的角色,View层只负责更新界面。
目前,MVP架构在采用Dagger2+Retrofit+rxjava框架或者其他框架进行设计与开发时,每次创建一个View文件(视图层,即Activity或者Fragment),都要手动添加Presenter文件并且需要在Dagger2中组件层去注册View文件。这些操作都是重复性的动作,消耗时间和精力,影响开发人员的工作效率。
发明内容
本申请的目的在于提供基于MVP架构的开发方法及装置、电子设备、计算机可读存储介质,解决创建View文件之后需要手动添加Presenter文件并注册View文件,重复操作影响开发效率的问题。
本申请的目的采用以下技术方案实现:
第一方面,本申请提供了一种基于MVP架构的开发方法,所述MVP架构包括Model层、View层和Presenter层,所述Presenter层用于实现所述Model层和所述View层之间的通信,所述方法包括:响应于第一View文件的调用,生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件;为所述第一View文件添加所述第一Presenter文件的依赖关系。该技术方案的有益效果在于,在开发人员创建View文件之后,响应于View文件的调用,动态生成Presenter文件,动态注册View文件,自动为View文件添加Presenter文件依赖关系,由此动态生成MVP文件结构并自动维护对应文件之间的依赖关系,上述步骤自动执行,避免重复操作浪费开发人员时间和精力,提高开发效率。
在一些可能的实现方式中,所述生成第一Presenter文件,包括:在预定Contract层文件夹下创建第一Contract文件,所述第一Contract文件用于定义所述第一Presenter文件的接口;在预定Presenter层文件夹下创建所述第一Presenter文件,以实现所述第一Contract文件中所述第一Presenter文件的接口,所述第一Contract文件中所述第一Presenter文件的接口用于定义所述第一View文件对所述第一Presenter文件交互的接口方法。该技术方案的有益效果在于,使用Contract文件来定义Presenter文件的接口,创建Presenter文件以实现对应接口。
在一些可能的实现方式中,所述在预定Contract层文件夹下创建第一Contract文件,包括:检测所述预定Contract层文件夹下是否存在所述第一Contract文件;若不存在,则创建所述第一Contract文件;所述在预定Presenter层文件夹下创建所述第一Presenter文件,包括:检测所述预定Presenter层文件夹下是否存在所述第一Presenter文件;若不存在,则创建所述第一Presenter文件。该技术方案的有益效果在于,开发人员在进行MVP设计与开发时,由于经常执行手动创建Contract文件以及Presenter文件的步骤,因此可能在创建文件的途中或者事后才想起来使用本方法,在创建Contract文件或者Presenter文件前进行检测,若预定文件夹中不存在对应的Contract文件或者Presenter文件再进行创建,避免开发人员在手动创建文件后使用本方法时重复创建文件的情况,增加本方法在实际应用中的灵活性。
在一些可能的实现方式中,所述在Dagger2的组件层注册所述第一View文件,包括:获取所述第一View文件的类型;若所述第一View文件的类型是Activity,则在DaggerActivity组件中注册所述第一View文件;若所述第一View文件的类型是Fragment,则在DaggerFragment组件中注册所述第一View文件。该技术方案的有益效果在于,根据View文件的类型在Dagger2的对应组件层中注册该View文件。
在一些可能的实现方式中,所述获取所述第一View文件的类型,包括:获取所述第一View文件的名称;根据所述第一View文件的名称获取所述第一View文件的类型。该技术方案的有益效果在于,根据View文件的名称获取View文件的类型。
在一些可能的实现方式中,所述若所述第一View文件的类型是Activity,则在DaggerActivity组件中注册所述第一View文件,包括:若所述第一View文件的类型是Activity,则检测所述第一View文件在所述DaggerActivity组件中是否注册;若未注册,则在所述DaggerActivity组件中注册所述第一View文件;所述若所述第一View文件的类型是Fragment,则在DaggerFragment组件中注册所述第一View文件,包括:若所述第一View文件的类型是Fragment,则检测所述第一View文件在所述DaggerFragment组件中是否注册;若未注册,则在所述DaggerFragment组件中注册所述第一View文件。该技术方案的有益效果在于,开发人员在进行MVP设计与开发时,由于经常执行手动注册View文件的步骤,因此可能在注册途中或者事后才想起来使用本方法,在注册View文件前检测该View文件在Dagger2的对应组件层中是否已注册,若未注册再进行注册,避免开发人员在手动注册View文件后使用本方法时重复注册的情况,增加本方法在实际应用中的灵活性。
在一些可能的实现方式中,所述第一Contract文件还用于定义所述第一View文件的接口,所述第一Contract文件中所述第一View文件的接口用于定义所述第一Presenter文件对所述第一View文件交互的接口方法;所述为所述第一View文件添加所述第一Presenter文件的依赖关系,包括:在所述第一View文件中实现所述第一Contract文件中所述第一View文件的接口;在所述第一View文件中对所述第一Presenter文件进行依赖注入;在所述第一View文件中实现所述第一Presenter文件的依赖注入。该技术方案的有益效果在于,通过实现接口、依赖注入和实现注入的步骤完成View文件和Presenter文件之间依赖关系的添加。
在一些可能的实现方式中,所述方法还包括:在编辑器中新建第一页面;在所述第一页面中打开所述第一Presenter文件,以使用户编辑与查看所述第一Presenter文件。该技术方案的有益效果在于,Presenter文件经常需要修改,直接在编辑器中新建一页并打开Presenter文件,可以方便用户编辑与查看。
在一些可能的实现方式中,所述MVP架构采用Dagger2、Retrofit和rxjava框架。该技术方案的有益效果在于,Dagger2是Google提供的依赖注入框架,依赖注入为Android中组件之间的解耦提供解决方案;Retrofit是RESTful架构的Android(Java)客户端实现,基于注解提供多种数据交互类型和网络请求接口封装;RxJava是一个在Java虚拟机上使用可观测的序列来组成异步的、基于事件的程序的库,采用Dagger2、Retrofit和rxjava结合的框架,利用三者优势以实现View文件和Presenter文件之间的解耦,以及提供网络请求接口封装和相关程序。
第二方面,本申请提供了一种基于MVP架构的开发装置,所述MVP架构包括Model层、View层和Presenter层,所述Presenter层用于实现所述Model层和所述View层之间的通信,所述装置包括:响应调用模块,用于响应于第一View文件的调用,生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件;添加依赖模块,用于为所述第一View文件添加所述第一Presenter文件的依赖关系。
在一些可能的实现方式中,所述响应调用模块还用于:在预定Contract层文件夹下创建第一Contract文件,所述第一Contract文件用于定义所述第一Presenter文件的接口;在预定Presenter层文件夹下创建所述第一Presenter文件,以实现所述第一Contract文件中所述第一Presenter文件的接口,所述第一Contract文件中所述第一Presenter文件的接口用于定义所述第一View文件对所述第一Presenter文件交互的接口方法。
在一些可能的实现方式中,所述响应调用模块还用于:检测所述预定Contract层文件夹下是否存在所述第一Contract文件;若不存在,则创建所述第一Contract文件;检测所述预定Presenter层文件夹下是否存在所述第一Presenter文件;若不存在,则创建所述第一Presenter文件。
在一些可能的实现方式中,所述响应调用模块还用于:获取所述第一View文件的类型;若所述第一View文件的类型是Activity,则在DaggerActivity组件中注册所述第一View文件;若所述第一View文件的类型是Fragment,则在DaggerFragment组件中注册所述第一View文件。
在一些可能的实现方式中,所述响应调用模块还用于:获取所述第一View文件的名称;根据所述第一View文件的名称获取所述第一View文件的类型。
在一些可能的实现方式中,所述响应调用模块还用于:若所述第一View文件的类型是Activity,则检测所述第一View文件在所述DaggerActivity组件中是否注册;若未注册,则在所述DaggerActivity组件中注册所述第一View文件;若所述第一View文件的类型是Fragment,则检测所述第一View文件在所述DaggerFragment组件中是否注册;若未注册,则在所述DaggerFragment组件中注册所述第一View文件。
在一些可能的实现方式中,所述第一Contract文件还用于定义所述第一View文件的接口,所述第一Contract文件中所述第一View文件的接口用于定义所述第一Presenter文件对所述第一View文件交互的接口方法;所述添加依赖模块用于:在所述第一View文件中实现所述第一Contract文件中所述第一View文件的接口;在所述第一View文件中对所述第一Presenter文件进行依赖注入;在所述第一View文件中实现所述第一Presenter文件的依赖注入。
在一些可能的实现方式中,所述装置还包括新建页面模块,所述新建页面模块用于:在编辑器中新建第一页面;在所述第一页面中打开所述第一Presenter文件,以使用户编辑与查看所述第一Presenter文件。
在一些可能的实现方式中,所述MVP架构采用Dagger2、Retrofit和rxjava框架。
第三方面,本申请提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
附图说明
下面结合附图和实施例对本申请进一步说明。
图1是本申请实施例提供的一种基于MVP架构的开发方法的流程示意图;
图2是本申请实施例提供的一种创建Presenter文件的流程示意图;
图3是本申请实施例提供的一种注册View文件的流程示意图;
图4是本申请实施例提供的一种为View文件添加Presenter文件依赖关系的流程示意图;
图5是本申请实施例提供的一种新建页面并打开Presenter文件的流程示意图;
图6是本申请实施例提供的一种基于MVP架构的开发方法的流程示意图;
图7是本申请实施例提供的一种脚本程序执行基于MVP架构的开发方法的流程示意图;
图8是本申请实施例提供的一种为View文件添加Presenter文件依赖关系的流程示意图;
图9是本申请实施例提供的一种基于MVP架构的开发方法的流程示意图;
图10是本申请实施例提供的一种基于MVP架构的开发装置的结构示意图;
图11是本申请实施例提供的一种电子设备的结构示意图;
图12是本申请实施例提供的一种用于实现基于MVP架构的开发方法的程序产品的结构示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本申请做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
参见图1,本申请实施例提供了一种基于MVP架构的开发方法,所述MVP架构包括Model层、View层和Presenter层,所述Presenter层用于实现所述Model层和所述View层之间的通信。其中,所述MVP架构可以采用Dagger2、Retrofit和rxjava框架。Dagger2是Google提供的依赖注入框架,依赖注入为Android中组件之间的解耦提供解决方案;Retrofit是RESTful架构的Android(Java)客户端实现,基于注解提供多种数据交互类型和网络请求接口封装;RxJava是一个在Java虚拟机上使用可观测的序列来组成异步的、基于事件的程序的库。采用Dagger2、Retrofit和rxjava结合的框架,利用三者优势以实现View文件和Presenter文件之间的解耦,以及提供网络请求接口封装和相关程序。
所述方法包括步骤S101~S102。
步骤S101:响应于第一View文件的调用,生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件。生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件,这两个步骤的顺序可以调换。
其中,可以使用Contract文件来定义Presenter文件的接口,创建Presenter文件以实现对应接口。具体而言,参见图2,所述步骤S101中生成第一Presenter文件的步骤,可以包括步骤S201~S202。
步骤S201:在预定Contract层文件夹下创建第一Contract文件,所述第一Contract文件用于定义所述第一Presenter文件的接口。Contract出于Google推荐的MVP设计模式,Contract文件中可以定义View文件和Presenter的接口,为二者提供解耦作用。
步骤S202:在预定Presenter层文件夹下创建所述第一Presenter文件,以实现所述第一Contract文件中所述第一Presenter文件的接口,所述第一Contract文件中所述第一Presenter文件的接口用于定义所述第一View文件对所述第一Presenter文件交互的接口方法。
开发人员在进行MVP设计与开发时,由于经常执行手动创建Contract文件以及Presenter文件的步骤,因此可能在创建文件的途中或者事后才想起来使用本方法,在创建Contract文件或者Presenter文件前进行检测,若预定文件夹中不存在对应的Contract文件或者Presenter文件再进行创建,避免开发人员在手动创建文件后使用本方法时重复创建文件的情况,增加本方法在实际应用中的灵活性。在一些可能的实现方式中,所述步骤S201可以包括:检测所述预定Contract层文件夹下是否存在所述第一Contract文件;若不存在,则创建所述第一Contract文件。所述步骤S202可以包括:检测所述预定Presenter层文件夹下是否存在所述第一Presenter文件;若不存在,则创建所述第一Presenter文件。
在一些可能的实现方式中,可以根据View文件的类型在Dagger2的对应组件层中注册该View文件。具体而言,参见图3,所述步骤S101中在Dagger2的组件层注册所述第一View文件的步骤,可以包括步骤S301~S303。
步骤S301:获取所述第一View文件的类型。
步骤S302:若所述第一View文件的类型是Activity,则在DaggerActivity组件中注册所述第一View文件。
步骤S303:若所述第一View文件的类型是Fragment,则在DaggerFragment组件中注册所述第一View文件。
在一些可能的实现方式中,可以根据View文件的名称获取View文件的类型。所述步骤S301可以包括:获取所述第一View文件的名称;根据所述第一View文件的名称获取所述第一View文件的类型。一般Android中View文件的名称定义方式为xxxActivity或者xxxFragment,其中xxx为功能点名称,因此通过名称可以获取View文件的类型。
开发人员在进行MVP设计与开发时,由于经常执行手动注册View文件的步骤,因此可能在注册途中或者事后才想起来使用本方法,在注册View文件前检测该View文件在Dagger2的对应组件层中是否已注册,若未注册再进行注册,避免开发人员在手动注册View文件后使用本方法时重复注册的情况,增加本方法在实际应用中的灵活性。在一些可能的实现方式中,所述步骤S302可以包括:若所述第一View文件的类型是Activity,则检测所述第一View文件在所述DaggerActivity组件中是否注册;若未注册,则在所述DaggerActivity组件中注册所述第一View文件。所述步骤S303可以包括:若所述第一View文件的类型是Fragment,则检测所述第一View文件在所述DaggerFragment组件中是否注册;若未注册,则在所述DaggerFragment组件中注册所述第一View文件。
步骤S102:为所述第一View文件添加所述第一Presenter文件的依赖关系。
在一些可能的实现方式中,可以通过实现接口、依赖注入和实现注入的步骤完成View文件和Presenter文件之间依赖关系的添加。所述第一Contract文件还用于定义所述第一View文件的接口,所述第一Contract文件中所述第一View文件的接口用于定义所述第一Presenter文件对所述第一View文件交互的接口方法。具体而言,参见图4,所述步骤S102可以包括步骤S401~S403。
步骤S401:在所述第一View文件中实现所述第一Contract文件中所述第一View文件的接口。
步骤S402:在所述第一View文件中对所述第一Presenter文件进行依赖注入。
步骤S403:在所述第一View文件中实现所述第一Presenter文件的依赖注入。
Presenter文件经常需要修改,直接在编辑器中新建一页并打开Presenter文件,可以方便用户编辑与查看。在一些可能的实现方式中,参见图5,所述方法还可以包括步骤S501~S502。
步骤S501:在编辑器中新建第一页面。
步骤S502:在所述第一页面中打开所述第一Presenter文件,以使用户编辑与查看所述第一Presenter文件。
上述基于MVP架构的开发方法的步骤可以通过在View层调用脚本程序的方式来实现,为了实现上述方法中的步骤,由脚本程序来完成的动作,与人工手动操作相一致。
在开发人员创建View文件之后,响应于View文件的调用,动态生成Presenter文件,动态注册View文件,自动为View文件添加Presenter文件依赖关系,由此动态生成MVP文件结构并自动维护对应文件之间的依赖关系,上述步骤自动执行,避免重复操作浪费开发人员时间和精力,提高开发效率。
参见图6,本申请实施例提供了一种基于MVP架构的开发方法,所述方法包括步骤S601~S602。
步骤S601:在View层的当前View文件中调用脚本程序。
步骤S602:脚本程序生成对应当前View文件的MVP文件结构并修改当前View文件的内容。
其中,参见图7,步骤S602可以包括步骤S701~S706。
步骤S701:脚本程序通过发起当前调用的View文件名,获取当前View文件的类型及文件的功能名xyz。
步骤S702:在预先设定的Contract层文件夹下创建Contract文件,Contract文件的命名方式例如是:功能名xyz+Contract命名。Contract文件中定义了View文件的接口和Presenter文件的接口。
步骤S703:在预先设定的Presenter层文件夹下创建Presenter文件,Presenter文件的命名方式例如是:功能名xyz+Presenter命名,Presenter文件用于实现Contract文件中Presenter文件的接口,Contract文件中Presenter文件的接口定义了View文件对Presenter文件交互的接口方法。
步骤S704:脚本程序根据View文件的类型在对应的Dagger2组件中注册该View文件,其中,不同的View类型对应不同的Dagger2组件,DaggerActivity组件或者DaggerFragment组件,每个组件的生命周期以及方法有所差异。
步骤S705:修改View文件。具体的,参见图8,步骤S705可以包括步骤S801~S803。
步骤S801:在当前处理的View文件中实现步骤S702中创建的Contract文件中View文件的接口,Contract文件中View文件的接口定义了Presenter文件对View文件交互的接口方法。由于Java使用需要先导包,因此需要导入对应的包引用。
步骤S802:添加当前处理的View文件对步骤S703中创建的Presenter文件的依赖注入。具体而言,可以在View文件中采用dagger2对Presenter文件进行依赖注入。与步骤S801相类似,该步骤也需要导入包引用。
步骤S803:调用Dagger2方法,实现依赖注入。具体而言,在View文件中需要调用对应组件进行注册,由Dagger2来接管注入文件的创建,例如步骤S802中的Presenter文件的创建。
步骤S706:Presenter文件是经常需要修改的,直接在编辑器中新建一页打开Presenter文件,可以方便用户编辑与查看。
步骤S703和S704的顺序可以调换。上述步骤S701~S706中由脚本程序来完成的动作,与人工手动操作相一致。
参见图9,在上述基于MVP架构的开发方法的一个实际应用中,所述方法包括步骤S901~S916。
步骤S901:在View文件中运行脚本程序。
步骤S902:获取当前View文件的名称、类型。该View文件的类型是Activity或者Fragment。
步骤S903:检测预定Contract文件夹下是否存在与当前View文件的名称相对应的Contract文件,若不存在则执行步骤S904,若存在则执行步骤S905。
步骤S904:创建Contract文件,执行步骤S905。
步骤S905:检测预定Presenter文件夹下是否存在与当前View文件的名称相对应的Presenter文件,若不存在则执行步骤S906,若存在则执行步骤S907。
步骤S906:创建Presenter文件,执行步骤S907。
步骤S907:检测当前View文件的类型是否是Activity,若是则执行步骤S908,否则执行步骤S909。
步骤S908:检测当前View文件在DaggerActivity中是否注册,若未注册则执行步骤S910,若已注册则执行步骤S912。
步骤S909:检测当前View文件在DaggerFragment中是否注册,若未注册则执行步骤S911,若已注册则执行步骤S912。
步骤S910:在DaggerActivity中注册该View文件。
步骤S911:在DaggerFragment中注册该View文件。
步骤S912:在View文件中实现Contract中View接口。
步骤S913:在View文件中对Presenter文件进行依赖注入。
步骤S914:在View文件中,调用Dagger2实现Presenter文件的依赖注入。
步骤S915:在编辑器中新建一页打开Presenter文件。
步骤S916:结束。
参见图10,本申请实施例还提供了一种基于MVP架构的开发装置,所述MVP架构包括Model层、View层和Presenter层,所述Presenter层用于实现所述Model层和所述View层之间的通信,所述装置包括:响应调用模块201,用于响应于第一View文件的调用,生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件;添加依赖模块202,用于为所述第一View文件添加所述第一Presenter文件的依赖关系。
在一些可能的实现方式中,所述响应调用模块201还用于:在预定Contract层文件夹下创建第一Contract文件,所述第一Contract文件用于定义所述第一Presenter文件的接口;在预定Presenter层文件夹下创建所述第一Presenter文件,以实现所述第一Contract文件中所述第一Presenter文件的接口,所述第一Contract文件中所述第一Presenter文件的接口用于定义所述第一View文件对所述第一Presenter文件交互的接口方法。
在一些可能的实现方式中,所述响应调用模块201还用于:检测所述预定Contract层文件夹下是否存在所述第一Contract文件;若不存在,则创建所述第一Contract文件;检测所述预定Presenter层文件夹下是否存在所述第一Presenter文件;若不存在,则创建所述第一Presenter文件。
在一些可能的实现方式中,所述响应调用模块201还用于:获取所述第一View文件的类型;若所述第一View文件的类型是Activity,则在DaggerActivity组件中注册所述第一View文件;若所述第一View文件的类型是Fragment,则在DaggerFragment组件中注册所述第一View文件。
在一些可能的实现方式中,所述响应调用模块201还用于:获取所述第一View文件的名称;根据所述第一View文件的名称获取所述第一View文件的类型。
在一些可能的实现方式中,所述响应调用模块201还用于:若所述第一View文件的类型是Activity,则检测所述第一View文件在所述DaggerActivity组件中是否注册;若未注册,则在所述DaggerActivity组件中注册所述第一View文件;若所述第一View文件的类型是Fragment,则检测所述第一View文件在所述DaggerFragment组件中是否注册;若未注册,则在所述DaggerFragment组件中注册所述第一View文件。
在一些可能的实现方式中,所述第一Contract文件还用于定义所述第一View文件的接口,所述第一Contract文件中所述第一View文件的接口用于定义所述第一Presenter文件对所述第一View文件交互的接口方法;所述添加依赖模块202用于:在所述第一View文件中实现所述第一Contract文件中所述第一View文件的接口;在所述第一View文件中对所述第一Presenter文件进行依赖注入;在所述第一View文件中实现所述第一Presenter文件的依赖注入。
在一些可能的实现方式中,所述装置还包括新建页面模块203,所述新建页面模块203用于:在编辑器中新建第一页面;在所述第一页面中打开所述第一Presenter文件,以使用户编辑与查看所述第一Presenter文件。
在一些可能的实现方式中,所述MVP架构采用Dagger2、Retrofit和rxjava框架。
参见图11,本申请实施例还提供了一种电子设备3,电子设备3包括至少一个存储器31、至少一个处理器32以及连接不同平台系统的总线33。
存储器31可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)311和/或高速缓存存储器312,还可以进一步包括只读存储器(ROM)313。
其中,存储器31还存储有计算机程序,程序产品4可以被处理器32执行,使得处理器32执行本申请实施例中基于MVP架构的开发方法的步骤(如图1所示)。存储器31还可以包括具有一组(至少一个)程序模块315的程序/实用工具314,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
相应的,处理器32可以执行上述的程序产品4,以及可以执行程序/实用工具314。
总线33可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备3也可以与一个或多个外部设备34例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备3交互的设备通信,和/或与使得该电子设备3能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口35进行。并且,电子设备3还可以通过网络适配器36与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器36可以通过总线33与电子设备3的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备3使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现本申请实施例中基于MVP架构的开发方法的步骤(如图1所示)。图12示出了本实施例提供的用于实现上述方法的程序产品4,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品4不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品4可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本申请从使用目的上,效能上,进步及新颖性等观点进行阐述,其设置有的实用进步性,已符合专利法所强调的功能增进及使用要件,本申请以上的说明及附图,仅为本申请的较佳实施例而已,并非以此局限本申请,因此,凡一切与本申请构造,装置,特征等近似、雷同的,即凡依本申请专利申请范围所作的等同替换或修饰等,皆应属本申请的专利申请保护的范围之内。

Claims (10)

1.一种基于MVP架构的开发方法,其特征在于,所述MVP架构包括Model层、View层和Presenter层,所述Presenter层用于实现所述Model层和所述View层之间的通信,所述方法包括:
响应于第一View文件的调用,生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件;
为所述第一View文件添加所述第一Presenter文件的依赖关系。
2.根据权利要求1所述的基于MVP架构的开发方法,其特征在于,所述生成第一Presenter文件,包括:
在预定Contract层文件夹下创建第一Contract文件,所述第一Contract文件用于定义所述第一Presenter文件的接口;
在预定Presenter层文件夹下创建所述第一Presenter文件,以实现所述第一Contract文件中所述第一Presenter文件的接口,所述第一Contract文件中所述第一Presenter文件的接口用于定义所述第一View文件对所述第一Presenter文件交互的接口方法。
3.根据权利要求2所述的基于MVP架构的开发方法,其特征在于,所述在预定Contract层文件夹下创建第一Contract文件,包括:
检测所述预定Contract层文件夹下是否存在所述第一Contract文件;
若不存在,则创建所述第一Contract文件;
所述在预定Presenter层文件夹下创建所述第一Presenter文件,包括:
检测所述预定Presenter层文件夹下是否存在所述第一Presenter文件;
若不存在,则创建所述第一Presenter文件。
4.根据权利要求1所述的基于MVP架构的开发方法,其特征在于,所述在Dagger2的组件层注册所述第一View文件,包括:
获取所述第一View文件的类型;
若所述第一View文件的类型是Activity,则在DaggerActivity组件中注册所述第一View文件;
若所述第一View文件的类型是Fragment,则在DaggerFragment组件中注册所述第一View文件。
5.根据权利要求4所述的基于MVP架构的开发方法,其特征在于,所述获取所述第一View文件的类型,包括:
获取所述第一View文件的名称;
根据所述第一View文件的名称获取所述第一View文件的类型。
6.根据权利要求4所述的基于MVP架构的开发方法,其特征在于,所述若所述第一View文件的类型是Activity,则在DaggerActivity组件中注册所述第一View文件,包括:
若所述第一View文件的类型是Activity,则检测所述第一View文件在所述DaggerActivity组件中是否注册;
若未注册,则在所述DaggerActivity组件中注册所述第一View文件;
所述若所述第一View文件的类型是Fragment,则在DaggerFragment组件中注册所述第一View文件,包括:
若所述第一View文件的类型是Fragment,则检测所述第一View文件在所述DaggerFragment组件中是否注册;
若未注册,则在所述DaggerFragment组件中注册所述第一View文件。
7.根据权利要求2所述的基于MVP架构的开发方法,其特征在于,所述第一Contract文件还用于定义所述第一View文件的接口,所述第一Contract文件中所述第一View文件的接口用于定义所述第一Presenter文件对所述第一View文件交互的接口方法;
所述为所述第一View文件添加所述第一Presenter文件的依赖关系,包括:
在所述第一View文件中实现所述第一Contract文件中所述第一View文件的接口;
在所述第一View文件中对所述第一Presenter文件进行依赖注入;
在所述第一View文件中实现所述第一Presenter文件的依赖注入。
8.根据权利要求1所述的基于MVP架构的开发方法,其特征在于,所述方法还包括:
在编辑器中新建第一页面;
在所述第一页面中打开所述第一Presenter文件,以使用户编辑与查看所述第一Presenter文件。
9.根据权利要求1所述的基于MVP架构的开发方法,其特征在于,所述MVP架构采用Dagger2、Retrofit和rxjava框架。
10.一种基于MVP架构的开发装置,其特征在于,所述MVP架构包括Model层、View层和Presenter层,所述Presenter层用于实现所述Model层和所述View层之间的通信,所述装置包括:
响应调用模块,用于响应于第一View文件的调用,生成第一Presenter文件,以及在Dagger2的组件层注册所述第一View文件;
添加依赖模块,用于为所述第一View文件添加所述第一Presenter文件的依赖关系。
CN202010649456.6A 2020-07-08 2020-07-08 基于mvp架构的开发方法及装置 Pending CN111782196A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010649456.6A CN111782196A (zh) 2020-07-08 2020-07-08 基于mvp架构的开发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010649456.6A CN111782196A (zh) 2020-07-08 2020-07-08 基于mvp架构的开发方法及装置

Publications (1)

Publication Number Publication Date
CN111782196A true CN111782196A (zh) 2020-10-16

Family

ID=72758287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010649456.6A Pending CN111782196A (zh) 2020-07-08 2020-07-08 基于mvp架构的开发方法及装置

Country Status (1)

Country Link
CN (1) CN111782196A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113043281A (zh) * 2021-04-21 2021-06-29 北京小乔机器人科技发展有限公司 一种智能机器人在户外物流送药中的应用

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004079568A1 (en) * 2003-03-05 2004-09-16 Expert Consultants, Inc. System and method for building a component-based architecture
CN105446755A (zh) * 2014-08-06 2016-03-30 阿里巴巴集团控股有限公司 一种用于Android系统上快速加载Activity数据的方法和装置
CN106951371A (zh) * 2017-03-20 2017-07-14 南京大学 一种基于依赖注入的安卓应用半自动化测试方法
CN107704393A (zh) * 2017-09-29 2018-02-16 武汉斗鱼网络科技有限公司 数据测试方法、装置及电子设备
CN109597621A (zh) * 2018-08-24 2019-04-09 天津字节跳动科技有限公司 封装Dagger的方法、装置、Dagger、解耦方法、装置、设备及介质
CN110018910A (zh) * 2018-01-08 2019-07-16 武汉斗鱼网络科技有限公司 事件总线的注册模板实现方法、存储介质、设备及系统
CN110688145A (zh) * 2019-09-10 2020-01-14 中国平安财产保险股份有限公司 Android MVP代码自动生成方法、装置、介质、电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004079568A1 (en) * 2003-03-05 2004-09-16 Expert Consultants, Inc. System and method for building a component-based architecture
CN105446755A (zh) * 2014-08-06 2016-03-30 阿里巴巴集团控股有限公司 一种用于Android系统上快速加载Activity数据的方法和装置
CN106951371A (zh) * 2017-03-20 2017-07-14 南京大学 一种基于依赖注入的安卓应用半自动化测试方法
CN107704393A (zh) * 2017-09-29 2018-02-16 武汉斗鱼网络科技有限公司 数据测试方法、装置及电子设备
CN110018910A (zh) * 2018-01-08 2019-07-16 武汉斗鱼网络科技有限公司 事件总线的注册模板实现方法、存储介质、设备及系统
CN109597621A (zh) * 2018-08-24 2019-04-09 天津字节跳动科技有限公司 封装Dagger的方法、装置、Dagger、解耦方法、装置、设备及介质
CN110688145A (zh) * 2019-09-10 2020-01-14 中国平安财产保险股份有限公司 Android MVP代码自动生成方法、装置、介质、电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113043281A (zh) * 2021-04-21 2021-06-29 北京小乔机器人科技发展有限公司 一种智能机器人在户外物流送药中的应用

Similar Documents

Publication Publication Date Title
WO2018228211A1 (zh) 应用转换方法、装置及设备
KR101645052B1 (ko) 디버깅 파이프라인
CN109918055B (zh) 一种应用程序的生成方法及设备
EP3971706B1 (en) Method, apparatus and electronic device for deploying operator in deep learning frame work
US9639348B2 (en) Program code library searching and selection in a networked computing environment
WO2016010831A1 (en) Interoperable machine learning platform
US10474479B1 (en) Preventing framework conflicts for multi-OS applications
JP2017146966A (ja) パッケージファイルに対する機能拡張方法およびシステム
CN111740948B (zh) 数据包发布方法、动态更新方法、装置、设备及介质
CN113918195A (zh) 应用界面更新方法、装置、电子设备及可读存储介质
CN110389755B (zh) 代码处理方法及装置、电子设备和计算机可读存储介质
CN110895471A (zh) 安装包生成方法、装置、介质及电子设备
CN114048415A (zh) 表单生成方法及装置、电子设备和计算机可读存储介质
CN114217789A (zh) 功能组件拓展方法、装置、设备、存储介质及程序产品
CN111782196A (zh) 基于mvp架构的开发方法及装置
CN111971655B (zh) 用于超文本标记语言图形内容的本机运行时技术
CN111475148A (zh) 第三方依赖库隔离方法及装置、电子设备、存储介质
CN115390846A (zh) 编译构建方法、装置、电子设备和存储介质
CN112379885B (zh) 小程序编译方法、装置、设备及可读存储介质
CN114911541A (zh) 配置信息的处理方法、装置、电子设备及存储介质
CN116685946A (zh) 在不停止应用的执行的情况下的更新的共享库的重新加载
CN111399806B (zh) 一种组件管理方法、装置、电子设备及存储介质
CN112882698A (zh) 开发环境的生成方法及装置、计算机存储介质及电子设备
CN114254232A (zh) 云产品页面生成方法、装置、计算机设备和存储介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination