CN106569818A - 一种快速实现MVVM模式的框架BMVVMFramework - Google Patents
一种快速实现MVVM模式的框架BMVVMFramework Download PDFInfo
- Publication number
- CN106569818A CN106569818A CN201610961596.0A CN201610961596A CN106569818A CN 106569818 A CN106569818 A CN 106569818A CN 201610961596 A CN201610961596 A CN 201610961596A CN 106569818 A CN106569818 A CN 106569818A
- Authority
- CN
- China
- Prior art keywords
- page
- data
- view
- list
- state
- 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
- G06F8/24—Object-oriented
-
- 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/31—Programming languages or programming paradigms
-
- 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/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种快速实现MVVM模式的框架BMVVMFramework。其中,包括进入需要加载网络数据列表的初始化页面、与初始化页面关联的默认页面和与默认页面有关联的封装页面,与初始化页面关联的显示数据页面和与显示数据页面关联的封装不布局页面。本发明具有使整个项目的结构更加清晰、简单,容易理解,而且通用性极强,无须额外学习,只要使用就可以马上生成一个MVVM模式的效果。
Description
技术领域
本发明涉及Android开发领域,特别涉及一种快速实现MVVM模式的框架BMVVMFramework。
背景技术
在Android开发中,Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户界面,并接受并处理来自用户的操作请求,进而作出响应。随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。当我们将其中复杂的逻辑处理移至另外的一个类(Presneter)中时,Activity其实就是MVP模式中View,它负责UI元素的初始化,建立UI元素与Presenter的关联(Listener之类),同时自己也会处理一些简单的逻辑(复杂的逻辑交由Presenter处理)。具体如下:1、Model-View-Controller模式(简称MVC模式),View接受事件,并调用Controller来操作Model,当Model实例的数据发生变化后,Controller来更新View。2、Model-View-Presenter模式(简称MVP模式),View层变成一个被动的东西,Presenter负责完成View层与Model层的交互。View不可以直接和Model交互(MVC中允许Model和View交互),只有Presenter告知其更新,它才会去更新。而且Presenter和View的交互是通过接口来完成。3、Model-View-ViewModel模式(简称MVVM模式),View的事件直接传递到ViewModel,ViewModel去对Model进行操作并接受更新。进而反馈到View上。因此,综上所述大多数Android项目都是基于MVC或MVP模式进行开发,MVC模式好处就是数据的更新变得很简单,但是缺点也十分明显,Activity变得非常臃肿,几乎所有功能都集合在一个地方,后期不好维护。MVP模式使用Presenter把功能性代码与Activity分离开来,但是随着功能增加Presenter之间的关系就变得越来越复杂,难以区分。
现在,有少部分采用MVVM模式开发。第三方的MVVM模式框架基于Rx系列的响应式编程框架,存在学习成本太高,不易于掌握,而且并非使用就可以建立MVVM模式项目,还有自己去封装和制定标准的缺陷。
发明内容
鉴于上述问题,本发明的目的在于提供一种使整个项目的结构更加清晰、简单,容易理解,而且通用性极强,无须额外学习,只要使用就可以马上生成一个MVVM模式的项目的快速实现MVVM模式的框架BMVVMFramework。
为实现上述目的,本发明提供的一种快速实现MVVM模式的框架BMVVMFramework,其特征在于,包括进入需要加载网络数据列表的初始化页面、与初始化页面关联的默认页面和与默认页面有关联的封装页面,与初始化页面关联的显示数据页面和与显示数据页面关联的封装不布局页面。初始化页面加载一个View提示页面,有数据之后加载数据的状态则变为下拉刷新和加载更多,而获取数据有可能网络异常而获取不到,而数据拿回来之后可能解析出现错误或者服务器崩溃,或仅仅是列表数据没有内容。显示数据页面是通过数据返回之后绑定视图进行数据关联,并且附带点击事件,其中定义了统一请求的出口,回调数据自动绑定视图和点击事件,返回一种统一的模板,轻松实现数据绑定和响应。封装不布局页面是通过Databinding的双向绑定技术把刷新状态和列表视图进行关联,轻松实现列表操作影响刷新状态进而请求网络数据进行新一轮列表视图更新和通过页面和页数控制进行加载更多数据;列表请求数据与状态关联,当网络请求的时候状态也相应进行改变,状态改变会立即关联到视图的改变。默认页面是非列表的需要加载网络数据的界面也同样跟列表的模式相似,虽然实现方式不一致,但同样遵循统一的方法。
在一些实施方式中,初始化页面加载的状态有空数据状态、刷新状态、错误状态、网络异常状态,及交互回调和加载数据。
本发明的有益效果是:1、通过本发明提供快速搭建出MVVM模式项目的功能,无须额外学习和封装功能即可建立一个完整的MVVM模式项目,提高开发效率。2、以BaseViewModel的模板为参照衍生出一套极为简便的开发库。因此,实现了使整个项目的结构更加清晰、简单,容易理解,而且通用性极强,无须额外学习,只要使用就可以马上生成一个MVVM模式的效果。
附图说明
图1为本发明的分布框图。
具体实施方式
下面结合附图对发明作进一步详细的说明。
如图1所示,一种快速实现MVVM模式的框架BMVVMFramework,包括进入需要加载网络数据列表的初始化页面、与初始化页面关联的默认页面和与默认页面有关联的封装页面,与初始化页面关联的显示数据页面和与显示数据页面关联的封装不布局页面。初始化页面加载一个View提示页面,有数据之后加载数据的状态则变为下拉刷新和加载更多,而获取数据有可能网络异常而获取不到,而数据拿回来之后可能解析出现错误或者服务器崩溃,或仅仅是列表数据没有内容。初始化页面加载的状态有空数据状态、刷新状态、错误状态、网络异常状态,及交互回调和加载数据。显示数据页面是通过数据返回之后绑定视图进行数据关联,并且附带点击事件,其中定义了统一请求的出口,回调数据自动绑定视图和点击事件,返回一种统一的模板,轻松实现数据绑定和响应。封装不布局页面是通过Databinding的双向绑定技术把刷新状态和列表视图进行关联,轻松实现列表操作影响刷新状态进而请求网络数据进行新一轮列表视图更新和通过页面和页数控制进行加载更多数据;列表请求数据与状态关联,当网络请求的时候状态也相应进行改变,状态改变会立即关联到视图的改变。默认页面是非列表的需要加载网络数据的界面也同样跟列表的模式相似,虽然实现方式不一致,但同样遵循统一的方法。通过本发明提供快速搭建出MVVM模式项目的功能,无须额外学习和封装功能即可建立一个完整的MVVM模式项目,提高开发效率。以BaseViewModel的模板为参照衍生出一套极为简便的开发库。
另外,代替方案采用RxJava,ReactiveCocoa等框架。都可以用于搭建MVVM模式,但RxJava,ReactiveCocoa等框架搭建还需要进行额外的学习,并且没有完善的封装,需要额外的去调整完善,不能达到本发明的简便快捷和容易理解,一使用马上可以生成MVVM模式项目。
以上所述的仅是本发明的一些实施方式。对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于发明的保护范围。
Claims (2)
1.一种快速实现MVVM模式的框架BMVVMFramework,其特征在于,包括进入需要加载网络数据列表的初始化页面、与初始化页面关联的默认页面和与默认页面有关联的封装页面,与初始化页面关联的显示数据页面和与显示数据页面关联的封装不布局页面;
所述的初始化页面加载一个View提示页面,有数据之后加载数据的状态则变为下拉刷新和加载更多,而获取数据有可能网络异常而获取不到,而数据拿回来之后可能解析出现错误或者服务器崩溃,或仅仅是列表数据没有内容;
所述的显示数据页面是通过数据返回之后绑定视图进行数据关联,并且附带点击事件,其中定义了统一请求的出口,回调数据自动绑定视图和点击事件,返回一种统一的模板,轻松实现数据绑定和响应;
所述的封装不布局页面是通过Databinding的双向绑定技术把刷新状态和列表视图进行关联,轻松实现列表操作影响刷新状态进而请求网络数据进行新一轮列表视图更新和通过页面和页数控制进行加载更多数据;列表请求数据与状态关联,当网络请求的时候状态也相应进行改变,状态改变会立即关联到视图的改变;
所述的默认页面是非列表的需要加载网络数据的界面也同样跟列表的模式相似,虽然实现方式不一致,但同样遵循统一的方法。
2.根据权利要求1所述的一种快速实现MVVM模式的框架BMVVMFramework,其特征在于,所述的初始化页面加载的状态有空数据状态、刷新状态、错误状态、网络异常状态,及交互回调和加载数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610961596.0A CN106569818A (zh) | 2016-11-04 | 2016-11-04 | 一种快速实现MVVM模式的框架BMVVMFramework |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610961596.0A CN106569818A (zh) | 2016-11-04 | 2016-11-04 | 一种快速实现MVVM模式的框架BMVVMFramework |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106569818A true CN106569818A (zh) | 2017-04-19 |
Family
ID=58535577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610961596.0A Pending CN106569818A (zh) | 2016-11-04 | 2016-11-04 | 一种快速实现MVVM模式的框架BMVVMFramework |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106569818A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284101A (zh) * | 2017-07-20 | 2019-01-29 | 菜鸟智能物流控股有限公司 | 一种对象属性的关联变更方法和装置 |
CN109446449A (zh) * | 2018-10-09 | 2019-03-08 | 上海连尚网络科技有限公司 | 一种预先刷新资讯页面内容的方法及设备 |
CN110995565A (zh) * | 2019-10-25 | 2020-04-10 | 陈奕博 | 一种基于mvvm架构的页面显示方法 |
CN111796577A (zh) * | 2020-06-29 | 2020-10-20 | 中国第一汽车股份有限公司 | 一种数据指令处理方法、装置、车辆及存储介质 |
CN112100187A (zh) * | 2020-08-31 | 2020-12-18 | 湖北美和易思教育科技有限公司 | 一种基于VueJS的学生学习数据存储方法及装置 |
CN113204442A (zh) * | 2021-05-31 | 2021-08-03 | 成都安恒信息技术有限公司 | 一种基于MVVM模式的操作IndexedDB的javascript库 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282367A1 (en) * | 2013-03-13 | 2014-09-18 | Northrop Grumman Systems Corporation | System and method for automated web processing service workflow building and application creation |
CN105867919A (zh) * | 2016-03-28 | 2016-08-17 | 浙江大学 | 一种基于访问器劫持的前端数据双向绑定实现方法 |
-
2016
- 2016-11-04 CN CN201610961596.0A patent/CN106569818A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282367A1 (en) * | 2013-03-13 | 2014-09-18 | Northrop Grumman Systems Corporation | System and method for automated web processing service workflow building and application creation |
CN105867919A (zh) * | 2016-03-28 | 2016-08-17 | 浙江大学 | 一种基于访问器劫持的前端数据双向绑定实现方法 |
Non-Patent Citations (2)
Title |
---|
GITHUB: ""MVVMFramework:Using DataBinding and Retrofit to build a fast MVVM framework"", 《HTTPS://GITHUB.COM/BIGKOO/ANDROID-MVVMFRAMEWORK》 * |
陈涛: ""MVVM设计模式及其应用研究"", 《计算机与数字工程》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284101A (zh) * | 2017-07-20 | 2019-01-29 | 菜鸟智能物流控股有限公司 | 一种对象属性的关联变更方法和装置 |
CN109446449A (zh) * | 2018-10-09 | 2019-03-08 | 上海连尚网络科技有限公司 | 一种预先刷新资讯页面内容的方法及设备 |
CN109446449B (zh) * | 2018-10-09 | 2022-05-10 | 南京尚网网络科技有限公司 | 一种预先刷新资讯页面内容的方法及设备 |
CN110995565A (zh) * | 2019-10-25 | 2020-04-10 | 陈奕博 | 一种基于mvvm架构的页面显示方法 |
CN111796577A (zh) * | 2020-06-29 | 2020-10-20 | 中国第一汽车股份有限公司 | 一种数据指令处理方法、装置、车辆及存储介质 |
CN112100187A (zh) * | 2020-08-31 | 2020-12-18 | 湖北美和易思教育科技有限公司 | 一种基于VueJS的学生学习数据存储方法及装置 |
CN112100187B (zh) * | 2020-08-31 | 2024-01-26 | 武汉美和易思数字科技有限公司 | 一种基于VueJS的学生学习数据存储方法及装置 |
CN113204442A (zh) * | 2021-05-31 | 2021-08-03 | 成都安恒信息技术有限公司 | 一种基于MVVM模式的操作IndexedDB的javascript库 |
CN113204442B (zh) * | 2021-05-31 | 2023-11-24 | 成都安恒信息技术有限公司 | 一种基于MVVM模式的操作IndexedDB的javascript库*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569818A (zh) | 一种快速实现MVVM模式的框架BMVVMFramework | |
CN103309674B (zh) | 一种软件架构*** | |
CN102708213B (zh) | 一种在pdm***与erp***之间实现bom信息传输的方法 | |
CN104216715A (zh) | 一种Web App开发框架及方法 | |
CN105761007A (zh) | 信息管理软件设计的辅助方法及*** | |
CN107491427A (zh) | 数据报表处理方法及装置 | |
CN107608675A (zh) | 基于虚拟文档对象模型的跨平台前端开发***及方法 | |
CN104714823B (zh) | 基于OpenStack的新建主机配置方法 | |
CN103246521B (zh) | 一种基于云计算的SaaS的平台及其使用方法 | |
CN105867944B (zh) | Web前端数据操作层及其实现方法 | |
CN103268230A (zh) | 用于构建可拓展服务的云计算信息管理平台的方法 | |
CN103150198B (zh) | 一种组态软件的显示方法 | |
CN103796058A (zh) | 一种基于虚拟输入设备实现对Android智能电视操控的方法 | |
CN109471626A (zh) | 页面逻辑结构、页面生成方法、页面数据处理方法及装置 | |
WO2017109791A1 (en) | A system and method for building enterprise applications | |
CN103150154A (zh) | 一种应用程序插件的实现方法及装置 | |
CN106610837A (zh) | 一种应用程序的开发方法及开发平台 | |
CN102541566A (zh) | 半导体软件界面框架生成方法 | |
CN103812953A (zh) | 一种微控制单元与 arm 处理器的通信接口*** | |
CN103677819B (zh) | 基于osgi的代码正向工程的实现方法和实现装置 | |
CN102999371B (zh) | 基于Lua脚本的人机界面开发方法及*** | |
CN104598250B (zh) | 一种***管理架构及其实现管理的方法 | |
CN103870280B (zh) | 基于flex与jsp的网页无缝结合处理方法 | |
CN105843601B (zh) | 基于安卓***的屏幕自适应适配方法 | |
CN108933760A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200323 Address after: 535000 5th floor, production auxiliary building, mingyueyuan, Qinzhou high tech Industrial Development Zone, Guangxi Zhuang Autonomous Region Applicant after: Guangxi Bilai Network Technology Co., Ltd Address before: 510623, 30, Zhujiang East Road, Guangzhou, Guangdong, 601 (601-B), Tianhe District, China Applicant before: GUANGDONG SUIYANG BUSINESS SERVICE STOCK Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170419 |