CN109062545A - 一种安卓系统原生应用的混合式快速开发框架 - Google Patents
一种安卓系统原生应用的混合式快速开发框架 Download PDFInfo
- Publication number
- CN109062545A CN109062545A CN201810693648.XA CN201810693648A CN109062545A CN 109062545 A CN109062545 A CN 109062545A CN 201810693648 A CN201810693648 A CN 201810693648A CN 109062545 A CN109062545 A CN 109062545A
- Authority
- CN
- China
- Prior art keywords
- frame
- container
- hybrid
- service logic
- mvp
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Abstract
本发明涉及一种安卓系统原生应用的混合式快速开发框架,所述框架的主体采用MVP及组件化开发模式作为基础,并通过区分不同的业务逻辑,使用不同的技术与框架;其中,简单的业务逻辑使用MVC以解决使用MVP框架导致通信链冗长、复杂,以及产生多余接口的问题;复杂的业务逻辑使用MVVM中的双向绑定技术去处理XML设计与View层的关系,从而省去MVP框架中大量View层对于XML设计的反馈代码;所述框架的的混合式布局基于RecyclerView的容器方式。本发明能够有效解决使用单一框架的缺陷,适应开发人数少、周期短、需求增减频繁的快速开发环境。
Description
技术领域
本发明涉及软件开发设计技术领域,特别是涉及一种安卓系统原生应用的混合式快速开发框架。
背景技术
近年来,随着Android操作系统相关技术的不断升级与完善,该系统在我国所占的比例也在逐年提高。根据凯度移动通信消费者指数(Kantar WorldPanel ComTech)报告,我国Android系统占比已经由2012年7月的61.8%增长至2017年9月的82.2%,占据着我国移动通信的半壁江山。随着移动互联网时代的不断发展,对于基于移动操作系统的软件开发要求也越来越高。如何在最短时间内开发出一款稳定的、高性能的、可扩展性强的和用户满意度高的移动软件成为如今的必然需求。针对这些需求出现了多种解决方案,如基于快速开发框架的原生应用、基于H5的混合式Web应用、基于React Native的应用等。由于原生应用拥有着混合式应用不具备的高性能和高稳定性等特点,所以原生应用也更容易受到企业开发者青睐。但只使用一种框架往往会存在很多问题,例如MVC框架针对复杂逻辑时Controller过于臃肿,MVP框架针对简单逻辑时接口过于冗余,而MVVM框架的业务逻辑较难重用等。
发明内容
本发明所要解决的技术问题是提供一种安卓系统原生应用的混合式快速开发框架,能够有效解决使用单一框架的缺陷,适应开发人数少、周期短、需求增减频繁的快速开发环境。
本发明解决其技术问题所采用的技术方案是:提供一种安卓系统原生应用的混合式快速开发框架,所述框架的主体采用MVP及组件化开发模式作为基础,并通过区分不同的业务逻辑,使用不同的技术与框架;其中,简单的业务逻辑使用MVC以解决使用MVP框架导致通信链冗长、复杂,以及产生多余接口的问题;复杂的业务逻辑使用MVVM中的双向绑定技术去处理XML设计与View层的关系,从而省去MVP框架中大量View层对于XML设计的反馈代码;所述框架的的混合式布局基于RecyclerView的容器方式。
所述简单业务逻辑是指接口数量在两个及以下的业务逻辑;所述复杂业务逻辑是指接口数量在五个以上,或View层需要动态变化的View数量在三个以上的业务逻辑。
若业务逻辑不属于简单业务逻辑,也不属于复杂业务逻辑时,使用MVP框架在需求变化的过程中通过删减接口来简化业务逻辑或者通过双向绑定替换反馈接口来增加业务逻辑。
所述的MVP框架通过一个协议来表示一块业务逻辑,View层接口及Presenter层接口作为该协议的内部接口,从而达到每一块业务逻辑拥有较高的内聚性,并且通过实现不同协议也能够灵活地删减不同的业务逻辑,并完成不同的功能。
所述基于RecyclerView的容器方式是指针对每种类型布局定义一种容器,包含这种类型的Model、Type、顶部布局、底部布局的Type、在混合式列表的起始及终止位置,以及这种类型在列表中的序号;定义一种混合式适配器,包含容纳所有容器的数组;在适配器添加容器时,设置该容器的初始及终止位置和列表序号,并在需要判断类型时,通过判断每个容器的位置范围来自动化地进行;通过建造者模式来设计容器的构造;在具体使用容器时,只需要通过容器的建造者生成不同类型的容器,并将其传入混合式适配器中,即可完成混合式布局。
有益效果
由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明主体采用MVP框架,并通过区分不同业务逻辑来分别使用MVC及MVVM中的双向绑定,解决了单一框架的缺陷,提高了开发效率;本发明基于RecyclerView的Container式混合布局,增强了Holder的可重用性及灵活度,解决了手动去判断不同类型的问题,缩短了开发周期;本发明基于协议的MVP框架,提高了每块业务逻辑的内聚性,并且能够灵活地删减业务逻辑,解决了业务逻辑较多、耦合度较大的问题,提高了可重用性。
附图说明
图1为本发明的总体框图;
图2为本发明中区分业务逻辑的流程图;
图3为本发明中MVP框架处理业务逻辑的序列图;
图4为本发明中MVP框架通过协议实现功能的流程图;
图5为本发明中使用基于RecyclerView的Container式混合布局的流程图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明的实施方式涉及一种安卓系统原生应用混合式快速开发框架,主要包括两个方面:1)主体采用MVP及组件化开发作为基础,并通过区分不同的业务逻辑,使用不同的技术与框架。简单的业务逻辑使用MVC,从而解决使用MVP框架导致通信链冗长且复杂、产生多余接口的问题。复杂的业务逻辑使用MVVM中的双向绑定去处理XML设计与View层的关系,从而省去MVP框架中大量View层对于XML设计的反馈代码。主体MVP框架中,通过对每一块业务逻辑定义相应的协议,从而提高每块业务逻辑的内聚性及可复用性,实现功能的灵活调整。2)针对Android开发中较为常见的混合式布局,提出一种基于RecyclerView的Container方式,能够使开发者不再需要编写类型判断代码,并且能够随时更换布局及位置,从而提高灵活性。
如图1所示,首先,根据需求的功能,区分轻重业务逻辑,简单的业务逻辑使用MVC,复杂的业务逻辑使用双向绑定;其次,划分不同的业务逻辑并定义相应的协议,根据协议划分逻辑接口;接着,对于混合式布局,定义相应的容器,并按需求进行组装;最后,完善具体代码,完成相应功能。
如图2所示。业务逻辑的区分主要包含三种:若接口数量在2个及以下(包含本地文件读写以及数据库读写操作),属于简单业务逻辑,使用MVC框架;若接口数量5个以上,或View层需要动态变化的View数量在3个以上,属于复杂业务逻辑,使用MVVM中的双向绑定;若业务逻辑不属于上述两种或业务逻辑难以区分,使用MVP框架,并在需求变化的过程中可以通过删减接口来简化业务逻辑,或者通过双向绑定替换反馈接口来增加业务逻辑。
如图3所示,相对于业务逻辑十分复杂、模型较大、控件较多的情况,如果使用MVP框架,将会导致View层中十分简单的数据获取与反馈的相关代码较多,增加不必要的开发时间。为了解决这个问题,本实施方式使用MVVM框架中的双向绑定去处理XML设计与View层的关系,从而省去大量View层对于XML设计的反馈,也就是图3中的步骤6。
如图4所示,通过不同的业务逻辑可以定义包含View层接口及Presenter层接口的不同的协议(Contract)。包含View层及Presenter层的页面可以通过实现不同的协议来完成相应的功能,例如,通过实现协议A完成功能A,通过实现协议A、B完成功能B等。在应用的版本迭代过程中,随着需求的增减,可以通过增删相应的协议来达到灵活调整功能的目的。由于每个协议本身具有较高的内聚性,避免了因为包含多种业务逻辑从而导致代码耦合、不能够灵活地调整功能的问题。
如图5所示,首先定义混合式布局所需要的不同容器,容器内包含容器在适配器中的起始及终止位置以及容器内部各部分的类型ID。接着初始化适配器,并初始化各个容器的位置序号。在判断当前显示部分的过程中,适配器通过判断当前容器的位置及是否需要显示来完成顶部、中部、底部的类型区分,并返回相应容器部分。当需要插入新容器或需要动态添加底部或顶部布局时,可以通过插入适配器数组,并更新当前及之后容器位置的方式,完成整个动态改变布局的功能。
具体地说,即针对每种类型布局定义一种容器,包含这种类型的Model、Type、顶部布局、底部布局的Type、在混合式列表的起始及终止位置,以及这种类型在列表中的序号;接着定义一种混合式适配器,包含容纳所有容器的数组;在适配器添加容器时,设置该容器的初始及终止位置和列表序号,并在需要判断类型时,通过判断每个容器的位置范围来自动化地进行;通过建造者模式来设计容器的构造;在具体使用容器时,只需要通过容器的建造者生成不同类型的容器,并将其传入混合式适配器中,即可完成混合式布局。
实验结果表明,本发明通过区分不同业务逻辑来采用不同框架与技术,弥补使用单一框架的缺陷,进而减少实际开发中的代码量,缩短开发周期,并使用基于RecyclerView的Container式混合布局,增强UI开发时的复用性及灵活度,提高开发效率。最终用于开发人数少、周期短、需求增减频繁的快速开发环境,从而帮助企业降低开发成本,达到资源的合理分配。
Claims (5)
1.一种安卓系统原生应用的混合式快速开发框架,其特征在于,所述框架的主体采用MVP及组件化开发模式作为基础,并通过区分不同的业务逻辑,使用不同的技术与框架;其中,简单的业务逻辑使用MVC以解决使用MVP框架导致通信链冗长、复杂,以及产生多余接口的问题;复杂的业务逻辑使用MVVM中的双向绑定技术去处理XML设计与View层的关系,从而省去MVP框架中大量View层对于XML设计的反馈代码;所述框架的的混合式布局基于RecyclerView的容器方式。
2.根据权利要求1所述的安卓系统原生应用的混合式快速开发框架,其特征在于,所述简单业务逻辑是指接口数量在两个及以下的业务逻辑;所述复杂业务逻辑是指接口数量在五个以上,或View层需要动态变化的View数量在三个以上的业务逻辑。
3.根据权利要求1所述的安卓系统原生应用的混合式快速开发框架,其特征在于,若业务逻辑不属于简单业务逻辑,也不属于复杂业务逻辑时,使用MVP框架在需求变化的过程中通过删减接口来简化业务逻辑或者通过双向绑定替换反馈接口来增加业务逻辑。
4.根据权利要求3所述的安卓系统原生应用的混合式快速开发框架,其特征在于,所述的MVP框架通过一个协议来表示一块业务逻辑,View层接口及Presenter层接口作为该协议的内部接口,从而达到每一块业务逻辑拥有较高的内聚性,并且通过实现不同协议也能够灵活地删减不同的业务逻辑,并完成不同的功能。
5.根据权利要求1所述的安卓系统原生应用的混合式快速开发框架,其特征在于,所述基于RecyclerView的容器方式是指针对每种类型布局定义一种容器,包含这种类型的Model、Type、顶部布局、底部布局的Type、在混合式列表的起始及终止位置,以及这种类型在列表中的序号;定义一种混合式适配器,包含容纳所有容器的数组;在适配器添加容器时,设置该容器的初始及终止位置和列表序号,并在需要判断类型时,通过判断每个容器的位置范围来自动化地进行;通过建造者模式来设计容器的构造;在具体使用容器时,只需要通过容器的建造者生成不同类型的容器,并将其传入混合式适配器中,即可完成混合式布局。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810693648.XA CN109062545A (zh) | 2018-06-29 | 2018-06-29 | 一种安卓系统原生应用的混合式快速开发框架 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810693648.XA CN109062545A (zh) | 2018-06-29 | 2018-06-29 | 一种安卓系统原生应用的混合式快速开发框架 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109062545A true CN109062545A (zh) | 2018-12-21 |
Family
ID=64818041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810693648.XA Pending CN109062545A (zh) | 2018-06-29 | 2018-06-29 | 一种安卓系统原生应用的混合式快速开发框架 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109062545A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837359A (zh) * | 2019-11-06 | 2020-02-25 | 北京小狗智能机器人技术有限公司 | 一种以GOLANG语言实现的MVC Web框架 |
CN111290737A (zh) * | 2020-01-20 | 2020-06-16 | 北京字节跳动网络技术有限公司 | 用于应用程序开发的方法、装置及电子设备 |
CN111506644A (zh) * | 2019-01-31 | 2020-08-07 | 北京神州泰岳软件股份有限公司 | 一种应用数据处理方法、装置和电子设备 |
CN112363723A (zh) * | 2020-11-11 | 2021-02-12 | 海看网络科技(山东)股份有限公司 | 一种动态组合安卓布局的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511868A (zh) * | 2015-11-30 | 2016-04-20 | 深圳联友科技有限公司 | 一种打包iOS应用程序的方法 |
-
2018
- 2018-06-29 CN CN201810693648.XA patent/CN109062545A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511868A (zh) * | 2015-11-30 | 2016-04-20 | 深圳联友科技有限公司 | 一种打包iOS应用程序的方法 |
Non-Patent Citations (2)
Title |
---|
佚名: "MVC,MVP,MVPVM(一)实践之路", 《HTTPS://BLOG.CSDN.NET/LISTEN2CODE/ARTICLE/DETAILS/53418515》 * |
佚名: "RecycIerView(四)-用RecycIerView实现多种布局", 《HTTPS://BLOG.CSDN.NET/YQL_RUNNING/ARTICLE/DETAILS/72634351》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506644A (zh) * | 2019-01-31 | 2020-08-07 | 北京神州泰岳软件股份有限公司 | 一种应用数据处理方法、装置和电子设备 |
CN111506644B (zh) * | 2019-01-31 | 2024-01-23 | 北京神州泰岳软件股份有限公司 | 一种应用数据处理方法、装置和电子设备 |
CN110837359A (zh) * | 2019-11-06 | 2020-02-25 | 北京小狗智能机器人技术有限公司 | 一种以GOLANG语言实现的MVC Web框架 |
CN111290737A (zh) * | 2020-01-20 | 2020-06-16 | 北京字节跳动网络技术有限公司 | 用于应用程序开发的方法、装置及电子设备 |
CN111290737B (zh) * | 2020-01-20 | 2023-03-21 | 北京字节跳动网络技术有限公司 | 用于应用程序开发的方法、装置及电子设备 |
CN112363723A (zh) * | 2020-11-11 | 2021-02-12 | 海看网络科技(山东)股份有限公司 | 一种动态组合安卓布局的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062545A (zh) | 一种安卓系统原生应用的混合式快速开发框架 | |
AU2012362829B2 (en) | Cloud-edge topologies | |
CN103198009B (zh) | 一种通用测试方法、系统及相应装置 | |
CN103955364B (zh) | 一种适用于手机的前端组件方法 | |
US20200380624A1 (en) | Smart contract template meta-programming system and method | |
CN106371825A (zh) | 一种移动端应用界面表单动态生成方法及装置 | |
CN103051652B (zh) | 一种移动终端云计算发布平台 | |
AU2021245203B2 (en) | Methods for defining a Network Service Descriptor (NSD) for a Network Service (NS), and Network Functions Virtualization (NFV) Orchestrator (NFVO) using said NSD | |
CN103051525A (zh) | 网关服务中间件系统及方法、包含该系统的装置和系统 | |
CN102346797A (zh) | 核电支吊架三维设计方法和系统 | |
CN103425468B (zh) | 插件式软件集成方法及装置 | |
CN104375818A (zh) | 一种通过配置文件实现通用数据格式录入的系统及方法 | |
CN101146281A (zh) | 一种面向移动终端的创建图形用户界面模型 | |
CN110489812A (zh) | 多层层级网表处理方法、装置、计算机设备及存储介质 | |
CN109240835A (zh) | 一种plm系统与erp系统对接方法 | |
CN104765607A (zh) | 免编译修改刷机包的方法 | |
CN102455903B (zh) | 一种用户应用界面的生成方法 | |
CN116185403A (zh) | 一种代码生成方法、装置及存储介质 | |
CN102541923A (zh) | 一种数据库读写分离的方法和装置 | |
CN109783083A (zh) | Web应用开发方法及其系统 | |
CN107809660B (zh) | 安卓智能电视数据内容来源灵活切换的方法 | |
CN109213670A (zh) | 实现白盒otn硬件设备的方法及装置、存储介质 | |
CN106886404A (zh) | 一种android的3D渲染装置 | |
CN109857374A (zh) | 移动应用的开发方法及装置 | |
CN116414386A (zh) | 一种基于vue的插件式开发系统及方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181221 |
|
RJ01 | Rejection of invention patent application after publication |