⽅创iOS 架构漫谈于德志
View Slide
Problem代码复⽤率低业务之间的差异性⼤⼯程内各个模块之间有相当⼀些代码是拷⻉的,或者说仅仅是个别参数不同,⼤体都相同的代码,在⼯程中出现的太多,导致app包的体积明显变⼤由于整个项⽬中可以公共的中间件或者组件⽬前还⽐较少,导致⼀些业务之间差异性本来不是很⼤,由于重⽤的东⻄少,导致基本上所有业务都是新的,很多都是重头开始,导致了开发效率低
Analysis先看看现在的构架
Now
Actual
How to solve业务之间差异性⼤提⾼代码复⽤率分层代码复⽤率低改
How to solve业务功能分层化组件化层次结构改
expect
How to solve
LayerView ViewModel 项⽬Model图⽚项⽬名称概要上线状态浏览次数融资轮数领域融资⾦额imgeURLnamedesclabelstatusbrowse countamountcompany Areacompany money
LayerView ViewModel 项⽬Model群头像群名称最近消息最近时间imgeURLGroupNamelastmessagelastTime
Advantage1.分层UI和业务逻辑相互隔离2.View可以复⽤View可以被不⽤业务中复⽤不⽤业务的ViewModel通过业务不⽤来注⼊到View中3.View可以相互灵活替换View可以根据不同业务逻辑,可以替换成各个不同的版本
LayerView ViewModelProJectDetailModelimageViewModeluserViewModelProJViewModel…………
Problem1.组件之间的依赖组件之间可能有公共的数据源2.组件之间有先后关系组件之间可能存在相互调⽤的关系3.UI之间相互关联……
Message BusGroupViewModel消息总线ChatViewModelChatListViewModel发布群⼈数变更消息订阅消息 订阅消息
Advantage消息总线数据库组件ViewModelViewModelViewModelViewModel⽹络组件Socket组件利⽤中介者模式,现实完全解耦
Install开发对应的ViewModel下⼀个组件配置消息总线选择ViewModel开发新组件选择组件开始结束
summary1.通过MVVM和组件化实现完全解耦,后期维护效率更⾼2.⼀个新业务需求的拆分将新需求拆分成各个组件View/ViewModel的开发,完成新需求只需要装配各个组件即可完成3.开发效率⼤⼤提⾼……
Thanks!