CN109189368B - 一种构建基于mvp架构的快速开发框架的方法和框架 - Google Patents
一种构建基于mvp架构的快速开发框架的方法和框架 Download PDFInfo
- Publication number
- CN109189368B CN109189368B CN201810757515.4A CN201810757515A CN109189368B CN 109189368 B CN109189368 B CN 109189368B CN 201810757515 A CN201810757515 A CN 201810757515A CN 109189368 B CN109189368 B CN 109189368B
- Authority
- CN
- China
- Prior art keywords
- layer
- data
- presenter
- identification information
- target
- 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.)
- Active
Links
- 238000011161 development Methods 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013507 mapping Methods 0.000 claims abstract description 29
- 239000013598 vector Substances 0.000 claims abstract description 29
- 230000006854 communication Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 8
- 230000006978 adaptation Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种构建基于MVP架构的快速开发框架的方法及相关设备。包括:生成ObjectObserver对象,并存储于Presenter层中,ObjectObserver对象用于表示Model层的数据集合框架,ObjectObserver对象用于对数据进行操作;生成View层中V层对象的标识信息,并存储于Presenter层中,标识信息用于表示各不同类型的V层对象;在Presenter层创建ClassPresenterSelector对象,ClassPresenterSelector对象用于使用HashMap管理所述V‑M映射关系,HashMap包括Vector,Vector用于保存桶,桶与key值对应,key值为标识信息。
Description
技术领域
本发明涉及开发平台领域,尤其涉及一种构建基于MVP架构的快速开发框架的方法和框架。
背景技术
随着智能电视的大面积普及,对安卓智能电视应用的需求也在快速增长,尤其是直播视频类的应用。作为安卓生态圈的宽屏设备,安卓智能电视在硬件发展上大幅度落后于安卓手机,而国内的安卓电视硬件环境也非常恶劣。各大电视厂商出于竞争意识,都会对原生的安卓电视系统进行深度定制,名为优化,实质就是用户界面(user interface,UI)上的修改,以及关闭部分提供给开发者的软件开发工具包(software development kit,SDK)套件接口,使得用户只能使用电视厂商官方的应用,类似的现象直接导致电视应用开发者要开发出能够兼容各个电视厂商系统的应用颇为困难,尤其是UI交互上面的适配。
现有技术中,由于SDK套件接口的关闭,导致开发者需要自行开发出能够兼容应用层与系统之间的接口协议,这些接口协议主要包括以下:1)网络通信接口;2)数据层与视图层交互接口;3)用户行为接收与处理接口;4)用户行为与视图层响应接口。同时,由于安卓TV开发者较为稀少,开源社区中TV开发框架的资源非常罕见,因此如何解决上述因接口协议导致的开发者适配以及开发困难问题,成为当前的一个难题。
发明内容
本发明实施例提供了一种构建基于数据-视图-演示(model-view-presenter,MVP)架构的快速开发框架的方法和框架,用于构建出适用于各个安卓电视系统应用的快速开发框架。
本发明实施例的第一方面提供了一种构建基于MVP架构的快速开发框架的方法,所述快速开发框架应用于安卓电视应用或者安卓盒子应用,所述快速开发框架包括:Model层、View层和Presenter层,所述Presenter层用于负责所述Model层和所述View层之间的通信,包括:生成ObjectObserver对象,并存储于所述Presenter层中,所述ObjectObserver对象用于表示所述Model层的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层;生成所述View层中V层对象的标识信息,并存储于所述Presenter层中,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层根据所述标识信息和所述Model层对应的所述ObjectObserver对象得到V-M映射关系;在所述Presenter层创建ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。本发明实施例中,基于已有的接口协议,构建出一套适用于各大品牌安卓电视系统应用快速开发框架,该框架将绝大多数MVP架构各个层级间通信进行了高度封装,使用者只需要关注业务层的逻辑编写即可,同时该MVP框架非常适合大批量数据的展示和适配。
在一种可能的实施例中,所述在所述Presenter层创建ClassPresenterSelector对象之后,所述方法还包括:在所述HashMap中的元素节点处保存所述key对应的Hash值;将所述Vector对应的链表替换为数组,以实现所述HashMap的改进操作。本实现方式中,还对HashMap进行改进操作,使得改进后的HashMap在内存占用和读取耗时提升明显。
在一种可能的实施例中,所述在所述HashMap中的元素节点处保存所述key对应的Hash值包括:确定所述Hash值中的目标字节,所述目标字节用于标识所述Vector保存的桶;在所述HashMap中的元素节点处保存所述目标字节。本实现方式中,提供了具体的改进HashMap的方法,使得本发明实施例更加具有可操作性。
在一种可能的实施例中,所述方法还包括:所述View层向所述Presenter层发送数据操作指令,所述数据操作指令用于指示对数据进行目标操作,所述数据操作指令包括目标V层对象的标识信息;所述Presenter层根据所述目标V层对象的标识信息在所述V-M映射关系中确定对应的目标ObjectObserver对象,以使得所述目标ObjectObserver对象对所述数据进行所述目标操作。本实现方式中,当快速开发架构建成后,V层和P层的通信过程,使得本申请实施例的步骤更加完善。
在一种可能的实施例中,所述目标操作包括但不限于以下操作中的一种或者多种:插入操作、删除操作或者更新操作。本实现方式中,说明了目标操作的具体内容,使得本发明实施例可应用于更多场景。
在一种可能的实施例中,所述标识信息为长整型类型数据。
本发明实施例的第二方面提供了一种基于MVP架构的快速开发框架,所述快速开发框架应用于安卓电视应用或者安卓盒子应用,所述快速开发框架包括:Model层、View层和Presenter层,所述Presenter层用于负责所述Model层和所述View层之间的通信,包括:所述Presenter层用于存储ObjectObserver对象,所述ObjectObserver对象用于表示所述Model层的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层;所述Presenter层还用于存储所述View层中V层对象的标识信息,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层根据所述标识信息和所述Model层对应的所述ObjectObserver对象得到V-M映射关系;所述Presenter层包括ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。本发明实施例中,基于已有的接口协议,构建出一套适用于各大品牌安卓电视系统应用快速开发框架,该框架将绝大多数MVP架构各个层级间通信进行了高度封装,使用者只需要关注业务层的逻辑编写即可,同时该MVP框架非常适合大批量数据的展示和适配。
在一种可能的实施例中,所述快速开发框架还包括:所述View层,用于向所述Presenter层发送数据操作指令,所述数据操作指令用于指示对数据进行目标操作,所述数据操作指令包括目标V层对象的标识信息;所述Presenter层,用于根据所述目标V层对象的标识信息在所述V-M映射关系中确定对应的目标ObjectObserver对象,以使得所述目标ObjectObserver对象对所述数据进行所述目标操作。本实现方式中,当快速开发架构建成后,V层和P层的通信过程,使得本发明实施例的步骤更加完善。
在一种可能的实施例中,所述目标操作包括但不限于以下操作中的一种或者多种:插入操作、删除操作或者更新操作。本实现方式中,说明了目标操作的具体内容,使得本发明实施例可应用于更多场景。
在一种可能的实施例中,所述标识信息为长整型类型数据。
本发明第三方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述任意一项所述的构建基于MVP架构的快速开发框架的方法的步骤。
本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如上述任意一项所述的构建基于MVP架构的快速开发框架的方法的步骤。
从以上技术方案可以看出,本发明实施例具有以下优点:生成ObjectObserver对象,并存储于所述Presenter层中,所述ObjectObserver对象用于表示所述Model层的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层;生成所述View层中V层对象的标识信息,并存储于所述Presenter层中,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层根据所述标识信息和所述Model层对应的所述ObjectObserver对象得到V-M映射关系;在所述Presenter层创建ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。本发明实施例中,基于已有的接口协议,构建出一套适用于各大品牌安卓电视系统应用快速开发框架,该框架将绝大多数MVP架构各个层级间通信进行了高度封装,使用者只需要关注业务层的逻辑编写即可,同时该MVP框架非常适合大批量数据的展示和适配。
附图说明
图1a为本发明实施例提供的一种可能的构建基于MVP架构的快速开发框架的方法的流程图;
图1b为本发明实施例提供的一种HashMap改进前后内存占用变化的示意图;
图1c为本发明实施例提供的一种HashMap改进前后查询速度变化的示意图;
图2为本发明实施例提供的一种可能的快速开发框架的结构示意图;
图3为本发明实施例提供的一种可能的电子设备的硬件结构示意图;
图4为本发明实施例提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
本发明实施例提供了一种构建基于MVP架构的快速开发框架的方法及快速开发框架,用于构建出适用于各个安卓电视系统应用的快速开发框架。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于更好的理解本发明实施例,以下将对本发明实施例中可能出现的术语进行解释说明:
所谓MVP架构,是从MVC架构演变而来,分为三层:Model层、View层、Presenter层,其中Presenter负责逻辑的处理,Model提供数据,View负责显示;其中,Model层,也就是数据层,它负责对数据的存取操作,例如对数据库的读写,网络数据的请求等;View层,也就是视图层,它负责对数据的展示,提供友好的界面与用户进行交互,在Android开发中通常将Activity或者Fragment作为View层;Presenter层,用于连接View层与Model层的桥梁并对业务逻辑进行处理,在MVP架构中Model与View无法直接进行交互。所以在Presenter层它会从Model层获得所需要的数据,进行一些适当的处理后交由View层进行显示。这样通过Presenter将View与Model进行隔离,使得View和Model之间不存在耦合,同时也将业务逻辑从View中抽离。需要说明的是,本发明实施例中,为便于描述,将Model层、View层和Presenter层分别简称为M层、V层和P层。
请参阅图1a,为本发明实施例提供的一种构建基于MVP架构的快速开发框架的方法的流程图,具体包括:
101、设计M层以及M-P之间的通信;
本发明实施例构建的框架采用MVP架构,是服务于安卓视图层的架构模式,在架构理念上类似于安卓应用的MVP架构,不同之处在于,本方案中的P层不进行网络数据获取,即P层只负责将M层的数据绑定到V层的控件上,M-V-P三层中的P层作为M层与V层的桥梁,其职责相对单一。M层为数据层,司职数据获取和数据操作,需要说明的是,无论是单条数据还是多条数据,都需要集合框架来存取这些数据,同时集合框架不能仅存取单一类型的元素(数据)。因此本发明实施例中,基于Java单一继承原则,设计新的元素(数据)存取集合框架即ObjectObserver对象,ObjectObserver对象基于观察者模式,具备元素的插入、删除、更新等操作能力,ObjectObserver对象内部使用ArrayList来作为元素的存放容器,M层与P层之间的通信的具体实现方式是:
步骤1、将新创建的ObjectObserver对象直接存储到P层中,由P层进行统一管理;
步骤2、P层接到V层数据操作的指令后,会根据V-M之间的映射关系来查询对应的ObjectObserver来对数据进行操作;
步骤3、P层以接口形式将ObjectObserver操作后的数据传递给V层。
102、设计V层以及V-P之间的通信;
V层为视图层,本发明实施例中,V层即视图层(View),由于V层与M层不直接通信V层与M层之间的数据交换由P层负责桥接,具体的实现方式包括:
1)为统一类型的View生成唯一的标识信息,本发明实施例中,该标识
信息可以为SerialVersionUID,其中,标识信息为长整型类型数据;
2)P层将SerialVersionUID存储到内部映射表中,同时绑定M层对应的ObjectObserver,并生成<SerialVersionUID,ObjectObserver>键值对,生成二者之间的映射关系,即V-M映射关系;
3)V层向P层发送数据操作指令,该数据操作指令用于指示对数据进行目标操作,其中,该数据操作指令包括目标V层对象的标识信息;
4)Presenter层根据目标V层对象的标识信息在V-M映射关系中确定对应的目标ObjectObserver对象,以使得目标ObjectObserver对象对所述数据进行所述目标操作。具体地,V层需要对数据进行操作时,会将SerialVersionUID传递给P层,然后P层根据传入的SerialVersionUID来查询其对应的ObjectObserver,然后将数据交由ObjectObserver进行数据操作。
需要说明的是,目标操作包括但不限于以下操作中的一种或者多种:插入操作、删除操作或者更新操作。
103、设计P层以及P-M和P-V之间的通信;
P层为馈赠层,负责M层与V层之间的通信,本发明实施例中,设计出ClassPresenterSelector,ClassPresenterSelector内部使用HashMap来存储<SerialVersionUID,ObjectObserver>键值对,来管理M与V之间的数据映射关系。其中,所谓HashMap,是基于Hash表的Map接口的实现,HashMap是用Hash表,其优点在于各项操作的平均时间复杂度接近常数。Hash表,其实现一般为拉链法,对于每一个元素存储链表的头结点,对于hash(key)%len相同的元素,存在一个下标中,然后按照链表连接起来,所以插入查找删除都接近常数,对于HashMap,包括一个Vector,一个List和一个Pair,其中Vector用于保存桶(顺序结构),List用于进行冲突处理(链表),Pair用于保存key-value结构(节点)。
104、对P层中的HashMap进行改进操作。
然而,对于大批量的数据,<SerialVersionUID,ObjectObserver>键值对的条数会非常庞大,而使用Java集合框架下的HashMap来存储如此大量的键值对会造成查询非常缓慢,鉴于此,本发明实施例中,可对HashMap进行改进操作,改进后的HashMap在内存占用和查询速度都得到极大的改善,具体的改进操作如下:
1)不在链表节点处保存key值;
HashMap中,每个元素结点都保存了key值(用于查找时进行比较)。很多时候,key的长度很大。在本申请实施例中,使用SerialVersionUID做key,而SerialVersionUID长度为16位的长整型数据,这就大大限制了每个进程hashmap能装载的总元素个数,因此,本发明实施例中,不在结点中保存key值,只保存其Hash值;
2)链表节点处只保存部分哈希值;
HashMap的Vector个数非常多,常常达到几千万个。若能够巧妙地利用这些桶的下标,就可以节省相当一部分内存。具体地说,若修改根据哈希值定位Vector的方式:用哈希值的其中几个字节表示桶号,则在每个元素结点中就没有必要保存完整的key值,只需要保存哈希值剩余的几个字节。
3)把Vector对应的链表修改为数组;
HashMap中,同一个Vector内容的元素使用链表管理。由于链表的每个结点有4个字节的指针开销。如果HashMap中的元素个数很少变化,可以使用固定大小的数组或动态数组,因此本发明实施例中,将这部分链表替换为数组,这样一方面,可以减少对内存的占用,另一方面可以提高定位的速度。
本发明实施例中,为验证本发明实施例构建的快速开发框架,经过对5000条32字节长度的字符串进行测试,使用本方案的MVP框架将这5000条数据不间断的绑定到View上,然后随机删除和更新部分数据,经过与未改进过的HashMap对比测试结果如图1b和图1c所示,其中,图1b为本发明实施例提供的一种HashMap改进前后内存占用变化示意图,图1c为本发明实施例提供的一种HashMap改进前后查询速度变化示意图,从图1b和图1c可以看出,随着元素个数的增多,改进后内存占用明显减少,同时,当元素个数低于3000时,改进后的HashMap查询速度有明显提升。
本发明实施例中,通过生成M层数据集合框架,便于P层对M层数据进行操作,且通过间接持有V层对象标识信息的方式进行P层和V层的通信,避免强引用带来的内存泄露。同时,对Java集合框架HashMap进行了改进,改进后的HashMap在内存占用和读取耗时方便提升明显。
上面从构建基于MVP架构的快速开发框架的方法的角度对本发明实施例进行了描述,下面从构建得到的快速开发框架的角度对本发明实施例进行描述。
请参阅图2,图2为本发明实施例提供的一种可能的快速开发框架的实施例示意图,其中,该快速开发框架具体包括:Model层201、View层202和Presenter层203,所述Presenter层用于负责所述Model层和所述View层之间的通信,
所述Presenter层203,用于存储ObjectObserver对象,所述ObjectObserver对象用于表示所述Model层201的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层202的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层202;
所述Presenter层203还用于存储所述View层202中V层对象的标识信息,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层203根据所述标识信息和所述Model层201对应的所述ObjectObserver对象得到V-M映射关系;
所述Presenter层203包括ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。
可选的,在一些可能的实现方式中,所述快速开发框架还包括:
所述View层202,用于向所述Presenter层203发送数据操作指令,所述数据操作指令用于指示对数据进行目标操作,所述数据操作指令包括目标V层对象的标识信息;
所述Presenter层203,用于根据所述目标V层对象的标识信息在所述V-M映射关系中确定对应的目标ObjectObserver对象,以使得所述目标ObjectObserver对象对所述数据进行所述目标操作。
本发明实施例中,基于已有的接口协议,构建出一套适用于各大品牌安卓电视系统应用快速开发框架,该框架将绝大多数MVP架构各个层级间通信进行了高度封装,使用者只需要关注业务层的逻辑编写即可,同时该基于MVP架构的快速开发框架非常适合大批量数据的展示和适配。
请参阅图3,图3为本发明实施例提供的电子设备的实施例示意图。
如图3所示,本发明实施例提供了一种电子设备,包括存储器310、处理器320及存储在存储器320上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时实现以下步骤:生成ObjectObserver对象,并存储于所述Presenter层中,所述ObjectObserver对象用于表示所述Model层的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层;生成所述View层中V层对象的标识信息,并存储于所述Presenter层中,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层根据所述标识信息和所述Model层对应的所述ObjectObserver对象得到V-M映射关系;在所述Presenter层创建ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。
可选的,在一种可能的实施例中,所述处理器具体用于:
在所述HashMap中的元素节点处保存所述key对应的Hash值;将所述Vector对应的链表替换为数组,以实现所述HashMap的改进操作。
可选的,在一种可能的实施例中,所述处理器具体用于:确定所述Hash值中的目标字节,所述目标字节用于标识所述Vector保存的桶;在所述HashMap中的元素节点处保存所述目标字节。
可选的,在一种可能的实施例中,所述处理器具体用于:触发所述View层向所述Presenter层发送数据操作指令,所述数据操作指令用于指示对数据进行目标操作,所述数据操作指令包括目标V层对象的标识信息;触发所述Presenter层根据所述目标V层对象的标识信息在所述V-M映射关系中确定对应的目标ObjectObserver对象,以使得所述目标ObjectObserver对象对所述数据进行所述目标操作。
在具体实施过程中,处理器320执行计算机程序311时,可以实现图1对应的实施例中任一实施方式。
本发明实施例中,通过生成M层数据集合框架,便于P层对M层数据进行操作,且通过间接持有V层对象标识信息的方式进行P层和V层的通信,避免强引用带来的内存泄露。同时,对Java集合框架HashMap进行了改进,改进后的HashMap在内存占用和读取耗时方便提升明显。
由于本实施例所介绍的电子设备为实施本发明实施例中一种构建基于MVP架构的快速开发框架所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本发明所欲保护的范围。
请参阅图4,图4为本发明实施例提供的一种计算机可读存储介质的实施例示意图。
如图4所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现如下步骤:生成ObjectObserver对象,并存储于所述Presenter层中,所述ObjectObserver对象用于表示所述Model层的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层;生成所述View层中V层对象的标识信息,并存储于所述Presenter层中,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层根据所述标识信息和所述Model层对应的所述ObjectObserver对象得到V-M映射关系;在所述Presenter层创建ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:在所述HashMap中的元素节点处保存所述key对应的Hash值;将所述Vector对应的链表替换为数组,以实现所述HashMap的改进操作。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:确定所述Hash值中的目标字节,所述目标字节用于标识所述Vector保存的桶;在所述HashMap中的元素节点处保存所述目标字节。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:触发所述View层向所述Presenter层发送数据操作指令,所述数据操作指令用于指示对数据进行目标操作,所述数据操作指令包括目标V层对象的标识信息;触发所述Presenter层根据所述目标V层对象的标识信息在所述V-M映射关系中确定对应的目标ObjectObserver对象,以使得所述目标ObjectObserver对象对所述数据进行所述目标操作。
本发明实施例中,通过生成M层数据集合框架,便于P层对M层数据进行操作,且通过间接持有V层对象标识信息的方式进行P层和V层的通信,避免强引用带来的内存泄露。同时,对Java集合框架HashMap进行了改进,改进后的HashMap在内存占用和读取耗时方便提升明显。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种构建基于数据-视图-演示MVP架构的快速开发框架的方法,所述快速开发框架应用于安卓电视应用或者安卓盒子应用,所述快速开发框架包括:Model层、View层和Presenter层,所述Presenter层用于负责所述Model层和所述View层之间的通信,其特征在于,包括:
生成ObjectObserver对象,并存储于所述Presenter层中,所述ObjectObserver对象用于表示所述Model层的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层;
生成所述View层中V层对象的标识信息,并存储于所述Presenter层中,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层根据所述标识信息和所述Model层对应的所述ObjectObserver对象得到V-M映射关系;
在所述Presenter层创建ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。
2.根据权利要求1所述的方法,其特征在于,所述在所述Presenter层创建ClassPresenterSelector对象之后,所述方法还包括:
在所述HashMap中的元素节点处保存所述key对应的Hash值;
将所述Vector对应的链表替换为数组,以实现所述HashMap的改进操作。
3.根据权利要求2所述的方法,其特征在于,所述在所述HashMap中的元素节点处保存所述key对应的Hash值包括:
确定所述Hash值中的目标字节,所述目标字节用于标识所述Vector保存的桶;
在所述HashMap中的元素节点处保存所述目标字节。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述View层向所述Presenter层发送数据操作指令,所述数据操作指令用于指示对数据进行目标操作,所述数据操作指令包括目标V层对象的标识信息;
所述Presenter层根据所述目标V层对象的标识信息在所述V-M映射关系中确定对应的目标ObjectObserver对象,以使得所述目标ObjectObserver对象对所述数据进行所述目标操作。
5.根据权利要求4所述的方法,其特征在于,所述目标操作包括但不限于以下操作中的一种或者多种:插入操作、删除操作或者更新操作。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述标识信息为长整型类型数据。
7.一种基于数据-视图-演示MVP架构的快速开发框架的装置,所述快速开发框架应用于安卓电视应用或者安卓盒子应用,所述快速开发框架包括:Model层、View层和Presenter层,所述Presenter层用于负责所述Model层和所述View层之间的通信,其特征在于,包括:
所述Presenter层用于存储ObjectObserver对象,所述ObjectObserver对象用于表示所述Model层的数据集合框架,所述ObjectObserver对象用于对数据进行操作,以使得所述Presenter层根据所述View层的数据操作指令将经过所述ObjectObserver对象操作后的数据传递给所述View层;
所述Presenter层还用于存储所述View层中V层对象的标识信息,所述标识信息用于表示各不同类型的V层对象,以使得所述Presenter层根据所述标识信息和所述Model层对应的所述ObjectObserver对象得到V-M映射关系;
所述Presenter层包括ClassPresenterSelector对象,所述ClassPresenterSelector对象用于使用HashMap管理所述V-M映射关系,所述HashMap包括Vector,所述Vector用于保存桶,所述桶与key值对应,所述key值为所述标识信息。
8.根据权利要求7所述的快速开发框架的装置,其特征在于,所述快速开发框架的装置还包括:
所述View层,用于向所述Presenter层发送数据操作指令,所述数据操作指令用于指示对数据进行目标操作,所述数据操作指令包括目标V层对象的标识信息;
所述Presenter层,用于根据所述目标V层对象的标识信息在所述V-M映射关系中确定对应的目标ObjectObserver对象,以使得所述目标ObjectObserver对象对所述数据进行所述目标操作。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-6任意一项所述的方法。
10.一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1-6任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810757515.4A CN109189368B (zh) | 2018-07-11 | 2018-07-11 | 一种构建基于mvp架构的快速开发框架的方法和框架 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810757515.4A CN109189368B (zh) | 2018-07-11 | 2018-07-11 | 一种构建基于mvp架构的快速开发框架的方法和框架 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189368A CN109189368A (zh) | 2019-01-11 |
CN109189368B true CN109189368B (zh) | 2021-11-26 |
Family
ID=64935995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810757515.4A Active CN109189368B (zh) | 2018-07-11 | 2018-07-11 | 一种构建基于mvp架构的快速开发框架的方法和框架 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189368B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8423790B2 (en) * | 2008-11-18 | 2013-04-16 | Bally Gaming, Inc. | Module validation |
US8823746B2 (en) * | 2010-10-19 | 2014-09-02 | Apple Inc. | System and method for motion blur using velocity vectors |
CN105975265B (zh) * | 2016-04-29 | 2019-04-12 | 掌赢信息科技(上海)有限公司 | 一种基于改进型mvp模式的装置 |
CN107391114B (zh) * | 2017-06-27 | 2020-09-22 | 阿里巴巴集团控股有限公司 | 页面可视化渲染方法及装置 |
-
2018
- 2018-07-11 CN CN201810757515.4A patent/CN109189368B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109189368A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110262818A (zh) | Java代码热更新方法、装置、电子设备及存储介质 | |
CN109408132A (zh) | 一种配置文件处理方法及服务器、用户终端、存储介质 | |
CN110875850B (zh) | 一种固件升级方法、系统、可读存储介质及终端设备 | |
US8504501B2 (en) | Dynamic constraint satisfaction problem solver | |
US9830333B1 (en) | Deterministic data replication with conflict resolution | |
CN110032454A (zh) | 远程调用方法、系统和相关设备及计算机可读存储介质 | |
CN111343181B (zh) | 报文的处理方法,系统以及数据池和计算机可读存储介质 | |
US20130339488A1 (en) | Enterprise services framework for mobile devices | |
CN106371881A (zh) | 一种用于服务器内程序版本更新的方法和系统 | |
CN112166429A (zh) | 暴露的信息模型与应用的集成中具有降低复杂度的系统和方法 | |
CN113918635A (zh) | 接口数据格式转换方法和装置 | |
CN110554998A (zh) | 一种通过替换函数内部指令的钩子方法、装置、终端及存储介质 | |
CN109960709B (zh) | 一种数据库驱动的处理方法、装置、设备及存储介质 | |
CN110324722B (zh) | 直播间中数据的获取方法、装置、设备和存储介质 | |
CN109189368B (zh) | 一种构建基于mvp架构的快速开发框架的方法和框架 | |
KR20010041783A (ko) | 소프트웨어의 생성장치 및 소프트웨어의 생성방법 | |
CN109976744A (zh) | 一种可视化编程方法、系统及终端设备 | |
CN108334374A (zh) | 组件动态加载与执行的方法和装置 | |
CN109343871A (zh) | 应用程序打包的方法、装置、设备及存储介质 | |
CN106375551A (zh) | 一种信息交互方法、装置及终端 | |
CN115878860A (zh) | 一种菜单的生成方法、装置、服务器设备及介质 | |
CN105867176A (zh) | 应用架构的切换方法及装置 | |
CN115934050A (zh) | 基于领域驱动的系统优化方法及装置、介质、设备 | |
US20190005255A1 (en) | Protecting restricted information when importing and exporting resources | |
JP4959003B2 (ja) | 反復コンポーネントのバインディング |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240125 Address after: Unit 1-2, 19th Floor, No.10 Huasheng Road, Yuzhong District, Chongqing, 400043 Patentee after: Chongqing Dixin Technology Co.,Ltd. Country or region after: China Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. Country or region before: China |