鸿蒙基础第二课笔记

目录

基本用法

样式

mvc、mvp、mvvm、mvi之间的区别


基本用法

break跳出当前循环,Continue跳出当前循环,继续下一个循环

class在鸿蒙java,kotlin,鸿蒙ArkTs中都是关键字

constructor是构造的关键字

@Builder 函数的组建

样式

@Styles装饰器,定义组件重用样式,可阻止重复代码

@Extend装饰器定义扩展组件样式

@statestyle多态样式

  • focused:获焦态。

  • normal:正常态。

  • pressed:按压态。

  • disabled:不可用态。

  • selected10+:选中态

@AnimatableExtend装饰器,可定义动画属性

@Require是校验@Prop、@State、@Provide、@BuilderParam和普通变量(无状态装饰器修饰的变量)是否需要构造传参的一个装饰器。

@Prop只用于接收属性(单向)@Link同步(双向)

@Provide与@Consume可跨级传输(双向)

AppStrage/LocalStorage

@Component装饰器能装饰struct关键字生命的数据结构

mvc、mvp、mvvm、mvi之间的区别

mvc的目的就是为了M和V代码分离,降低耦合性

Model是数据来源,网络请求数据和数据库数据。

VIew:xml布局文件和动态的布局部分。

Controller逻辑控制部分。主要起到协调M层和V层的关系,起到承上启下的作用。

优点:一定程度上实现了代码分离,降低耦合性

缺点:Controller和view没有完全解耦,随着业务的逻辑增多

controller会变得越来越臃肿,在Android中Activity充当Controller的角色,后面Activity会变成GadActivity

M层和V层还有交互,没有做到完全的分离

mvp的model层数据来源,网络请求数据和数据库数据 

view对应xml了布局文件和动态的布局部分。对应Activity

Presenter逻辑控制部分。通过接口连接M层和V层

优点:V层对应Activity只负责UI的展示和P层直接联系,和M层没有任何交互

V层和M层没有交互可以形成单独的组件,方便复用。

V层和M层完全分离,方便协同工作,

缺点:M层和V层都需要P层进行通许,会导致P层代码很复杂,而且都是通过接口通讯,如果一个P层用于多个Activity,所有Activity都全部实现这个接口,会涉及很多的界面那样很麻烦。

P层和V层通过接口通讯,会持有view的引用,容易造成内存泄漏

随着业务的增多,P层即使对应一个页面,接口也会越来越多

mvvm

VM层不再持有View的引用,不容易导致内存泄漏

引入响应式编程,Lifecycle生命周期感知,livedata数据存储,DataBind数据绑定概念。

Model:数据来源,网络请求数据和数据库数据

viewmodel:逻辑控制部分,作为桥梁。通知M层处理数据,将结果回调到V层处理UI。

Activity持有viewmmodel的引用,viewmodel不持有viiew的引用。

view:对应xml布局文件和动态的布局部分,这里的view是通过databind来进行双向绑定的

优点:进一步解耦,viewmodel不持有view的引用,view持有viewmodel的引用,当V层改变时,只要V层绑定的数据不变,viewmodel就不需要修改

省略findViewById,ACtivity变得很简洁

通过dataBind实现view和model层的实时改变,一方改变就会同步到对方

缺点:dataBind采用异步更新数据,对listview这样的列表,效率比较低,在实际开发中ui效果比较复杂,使用双向绑定不能完全实现,】dataBind会生成大量的代码和属性字段

复杂的页面要定义多个livedata,并且暴露为不可变的livedata

livedata是粘性事件,会导致数据倒灌等问题,

MVI

为了解决MVVM中双向绑定的不足,变成单向流,FLow替换LiveData

Model:和其他框架的model不一样,在MVI框架中存储UI的状态

view:view主要是接口,用于负责响应UI状态

INtent:在MVI中Intent不要负责传递UI状态,使用sealed关键字,形成一个封闭类,类似枚举,主要用于V层通知viewmodel处理数据

state:是一个封闭类,主要用于xviewmodel回调数据修改UI

                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值