1.本发明涉及代码架构领域,尤其涉及一种直播间架构系统及其运行方法、电子设备和介质。
背景技术:2.当前现有直播间架构系统使用mvc架构模式,使用fragment从activity中解耦了业务逻辑与播放器逻辑。此模式面对复杂的直播间逻辑时,fragment已经显的非常臃肿,而且业务不仅依赖在fragment上也会透传到activity层,导致逻辑层层耦合,难以维护和阅读,需要新的方案优化直播间。
技术实现要素:3.本发明要解决的技术问题是为了从工程架构的角度,解耦业务与业务间的耦合,并且保证直播间代码便于维护及扩展。
4.本发明是通过下述技术方案来解决上述技术问题:
5.第一方面,提供一种直播间架构系统,其包括表现层、领域层、数据层;
6.所述表现层用于页面渲染,包括view(展示的用户界面)层和viewmodel(与用户界面对应的业务逻辑相关的数据对象)层;所述view层用于页面展示,在页面需要刷新时,向所述viewmodel层传递参数等待回调数据,根据回调数据刷新页面;
7.所述viewmodel层用于接收到view层传递的所述参数后,通过所述领域层获取数据,将获取的数据转换成所述view层刷新所需数据,再将转换后的数据回调至所述view层;
8.所述领域层用于调用所述数据层的方法,等待所述数据层回调数据;
9.所述数据层用于发起服务请求,通过服务器接口路由获取数据,将获取的数据根据业务逻辑进行预处理后返回给所述领域层。
10.较佳地,所述view层注册livedata(一种可感知生命周期的组件)事件,等待所述viewmodel层回调数据;所述viewmodel层通过将转换后的数据传至所述livedata,所述livedata分发数据使所述view层刷新;
11.和/或,所述领域层为interface类,与至少一个数据层继承;所述领域层被多个数据层继承后,根据不用业务场景选择使用其中一个数据层;
12.和/或,所述预处理包括从服务器获取的数据解析后储存在所述数据层内;
13.和/或,所述数据层之间相互独立,当需要多个所述数据层数据时,各所述数据层将数据回调给所述viewmodel层,由所述viewmodel层统一处理数据。
14.较佳地,一个所述view层持有一个或多个所述viewmodel层,所述viewmodel层之间相互独立。
15.较佳地,所述viewmodel层之间的通信方式是由一个viewmodel层通过livedata通知所述view层,再通知另一个viewmodel层。
16.第二方面,提供一种直播间架构系统的运行方法,所述直播间架构系统包括表现
层、领域层、数据层;所述表现层包括view层和viewmodel层;所述运行方法包括:
17.所述view层向所述viewmodel层传递参数;
18.所述viewmodel层接收到view层传递的所述参数后,通过所述领域层获取数据;
19.所述领域层用于调用所述数据层的方法,等待所述数据层回调数据;
20.所述数据层发起服务请求,通过服务器接口路由获取数据,将获取的数据根据业务逻辑进行预处理后返回给所述领域层;
21.所述领域层将数据返回给所述viewmodel层;
22.所述viewmodel层将获取的数据转换成所述view层刷新所需数据,再将转换后的数据回调至所述view层;
23.所述view层根据回调数据刷新页面。
24.较佳地,所述view层向所述viewmodel层传递参数步骤之后还包括:
25.所述view层注册livedata事件,等待所述viewmodel层回调数据;
26.所述viewmodel层通过将转换后的数据传至所述livedata,所述livedata分发数据使所述view层刷新;
27.和/或,所述领域层为interface类,与至少一个数据层继承;所述领域层被多个数据层继承后,根据不用业务场景选择使用其中一个数据层;
28.和/或,所述预处理包括从服务器获取的数据解析后储存在所述数据层内;
29.和/或,所述数据层之间相互独立,当需要多个所述数据层数据时,各所述数据层将数据回调给所述viewmodel层,由所述viewmodel层统一处理数据。
30.较佳地,一个所述view层持有一个或多个所述viewmodel层,所述viewmodel层之间相互独立。
31.较佳地,所述viewmodel层之间的通信方式是由一个viewmodel层通过livedata通知view层,再通知另一个viewmodel层。
32.第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的直播间架构系统的运行方法。
33.第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的直播间架构系统的运行方法。
34.本发明的积极进步效果在于:业务间代码解耦,各层关注于自身的业务逻辑,方便维护和阅读,可以使开发者编写独立于ui的代码,且各层间职责单一且明确,便于追溯数据来源。
附图说明
35.图1为本发明实施例1提供的一种直播间架构系统的结构示意图。
36.图2为本发明实施例2提供的一种直播间架构系统的运行方法的流程示意图。
37.图3为本发明实施例3提供的一种电子设备的结构示意图。
具体实施方式
38.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实
施例范围之中。
39.实施例1
40.本实施例提供一种直播间架构系统,如图1,其包括表现层1、领域层2、数据层3。具体实施时,直播间架构系统可以有多个表现层、领域层、数据层,表现层可以有多个view层和viewmodel层。
41.第一层,表现层1用于页面渲染,作为用户操作层实行用户操作,包括view层11和viewmodel层12;
42.view层11用于页面展示,在页面需要刷新时,向viewmodel层12传递参数等待回调数据,根据回调数据刷新页面;
43.viewmodel层12用于接收到view层传递的所述参数后,通过领域层2获取数据,将获取的数据转换成view层11刷新所需数据,再将转换后的数据回调至view层11;
44.值得注意的是,通过以上的设计有不同于现有技术的功能分配,具体如下:所述view层11只用于页面展示,不处理业务数据;所述viewmodel层12不进行请求数据的操作,而将这一操作实际交付给数据层3进行。
45.在具体实施时,view层还注册livedata事件,用于等待viewmodel层回调数据;所述viewmodel层通过将转换后的数据传至所述livedata,再由livedata分发数据使所述view层刷新;一个所述view层持有一个或多个所述viewmodel层,所述viewmodel层之间相互独立,而viewmodel层之间的通信方式是由一个viewmodel层通过livedata通知所述view层,再通知另一个viewmodel层。
46.第二层,领域层2用于调用所述数据层3的方法,等待所述数据层3回调数据。
47.领域层的原理在于,作为接口层,主要是负责解耦数据层与表现层,用于协调数据层与表现层之间的工作,明确数据层和领域层的职责,以完成一系列特定的,明确的业务,并且防止表现层随意改动数据导致数据错乱,从而引起删除错误、崩溃等一系列问题。
48.第三层,数据层3用于发起服务请求,通过服务器接口路由获取数据,将获取的数据根据业务逻辑进行预处理,此处的预处理包括从服务器获取的数据解析后储存在数据层3内,并通过将数据返回给领域层2。
49.具体实施时,数据层之间相互独立,当需要多个所述数据层数据时,各数据层将数据回调给viewmodel层,由viewmodel层统一处理数据,所述领域层为interface类,与至少一个数据层继承;所述领域层被多个数据层继承后,根据不用业务场景选择使用其中一个数据层。
50.本实施例根据三层架构以及其功能和流程的设计,使每层的功能更加清晰,实现了只需要更改数据,就可以改变view层的展示,便于view层的复用和修改的效果;此外业务逻辑写在viewmodel层,保证业务逻辑尽可能的复用,可以使viewmodel层做业务逻辑时不关心数据是从服务还是内存获取的,使viewmodel层的职责更加关注与业务逻辑本身;使得数据层可以复用,而且当数据需要修改时,只需要关注数据层,而不修改业务逻辑;还能便于扩展,viewmodel与数据层的多种组合可以不同的业务场景。最终实现业务与业务间低耦合,业务逻辑在自己的viewmodel层,通过不同的viewmodel和领域层,区分业务与业务,其他业务只需要通过livedata就可以实现业务间的互相调用的成果。
51.实施例2
52.本实施例提供一种直播间架构系统的运行方法,所述直播间架构系统包括表现层、领域层、数据层;表现层包括view层和viewmodel层。
53.具体实施时,直播间架构系统可以有多个表现层、领域层、数据层,表现层可以有多个view层和viewmodel层;一个view层持有一个或多个所述viewmodel层,viewmodel层之间相互独立,viewmodel层之间的通信方式是由一个viewmodel层通过livedata通知view层,再通知另一个viewmodel层。如图2,运行方法的步骤具体如下:
54.步骤101、view层向viewmodel层传递参数;
55.具体实施时,用户进入直播间进行用户操作,直播间view层需要刷新;例如,用户操作为点关注,此时,view层的关注控件开始加载,需要对关注控件进行刷新。
56.此时,view层控件收到加载信息的同时注册并绑定对应的livedata,并且向viewmodel层传递参数等待刷新关注控件所需的回调数据。
57.步骤102、viewmodel层接收到view层传递的所述参数后,通过领域层获取数据。
58.具体实施时,viewmodel层一并告知领域层获取数据所需要接入的一个或多个适配接口的数据层;例如,接收到点关注的触发指令参数后所需要的数据层包括包含主播id数据的数据层、包含主播直播间开播状态数据的数据层等。所述数据层之间相互独立,当需要多个所述数据层数据时,各所述数据层将数据回调给所述viewmodel层,由所述viewmodel层统一处理数据。
59.步骤103、领域层调用所述数据层的方法,等待所述数据层回调数据。
60.步骤104、数据层发起服务请求,通过服务器接口路由获取数据,将获取的数据根据业务逻辑进行预处理后返回给所述领域层。
61.例如,数据层发起点关注所需数据的服务请求,通过网络关注接口获取数据。获取点关注所需数据之后根据业务逻辑对数据进行预处理,预处理的操作包括存储关注状态并将服务返回的数据附加上主播信息,将预处理好的数据返回给领域层。
62.步骤105、领域层将数据返回给viewmodel层。
63.步骤106、viewmodel层将获取的数据转换成view层刷新所需数据,再将转换后的数据回调至所述view层。
64.例如,viewmodel层根据业务场景将数据处理成关注按钮所需的数据。具体实施时,viewmodel层通过将转换后的数据传至所述livedata,livedata分发数据使view层刷新。
65.步骤107、view层根据回调数据刷新页面。
66.例如,view层的关注控件通过livedata分发的数据刷新关注量、关注标志等视图。
67.本实施例根据三层架构及其运行方式,使每层的功能更加清晰,实现了只需要更改数据,就可以改变view层的展示,便于view层的复用和修改的效果;此外业务逻辑写在viewmodel层,保证业务逻辑尽可能的复用,可以使viewmodel层做业务逻辑时不关心数据是从服务还是内存获取的,使viewmodel层的职责更加关注与业务逻辑本身;使得数据层可以复用,而且当数据需要修改时,只需要关注数据层,而不修改业务逻辑;还能便于扩展,viewmodel与数据层的多种组合可以不同的业务场景。最终实现业务与业务间低耦合,业务逻辑在自己的viewmodel层,通过不同的viewmodel和领域层,区分业务与业务,其他业务只需要通过livedata就可以实现业务间的互相调用的成果。
68.实施例3
69.本实施例提供一种电子设备,图3为本实施例提供的一种电子设备的结构示意图,电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例2中的直播间架构系统的运行方法。图3显示的电子设备80仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图3所示,电子设备80可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备80的组件可以包括但不限于:上述至少一个处理器81、上述至少一个存储器82、连接不同系统组件(包括存储器82和处理器81)的总线83。
70.总线83包括数据总线、地址总线和控制总线。
71.存储器82可以包括易失性存储器,例如随机存取存储器(ram)821和/或高速缓存存储器822,还可以进一步包括只读存储器(rom)823。
72.存储器82还可以包括具有一组(至少一个)程序模块824的程序工具825(或实用工具),这样的程序模块824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
73.处理器81通过运行存储在存储器82中的计算机程序,从而执行各种功能应用以及数据处理,例如上述实施例2中的直播间架构系统的运行方法。
74.电子设备80也可以与一个或多个外部设备84通信。这种通信可以通过输入/输出(i/o)接口85进行。并且,模型生成的电子设备80还可以通过网络适配器86与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图3所示,网络适配器86通过总线83与电子设备80的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备80使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
75.应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
76.实施例4
77.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例2中的直播间架构系统的运行方法。
78.其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
79.在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现上述实施例2中的直播间架构系统的运行方法的步骤。
80.其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
81.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅
是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。