$30 off During Our Annual Pro Sale. View Details »

iOS Architecture

halfrost
August 25, 2016

iOS Architecture

halfrost

August 25, 2016
Tweet

More Decks by halfrost

Other Decks in Programming

Transcript

  1. ⽅创iOS 架构漫谈
    于德志

    View Slide

  2. Problem
    代码复⽤率低
    业务之间的差异性⼤
    ⼯程内各个模块之间有相当⼀些
    代码是拷⻉的,或者说仅仅是个
    别参数不同,⼤体都相同的代
    码,在⼯程中出现的太多,导致
    app包的体积明显变⼤
    由于整个项⽬中可以公共的中间件或者组
    件⽬前还⽐较少,导致⼀些业务之间差异
    性本来不是很⼤,由于重⽤的东⻄少,导
    致基本上所有业务都是新的,很多都是重
    头开始,导致了开发效率低

    View Slide

  3. Analysis
    先看看现在的构架

    View Slide

  4. Now

    View Slide

  5. Actual

    View Slide

  6. How to solve
    业务之间差异性⼤
    提⾼代码复⽤率
    分层
    代码复⽤率低

    View Slide

  7. How to solve
    业务功能
    分层化
    组件化
    层次结构

    View Slide

  8. View Slide

  9. expect

    View Slide

  10. How to solve

    View Slide

  11. Layer
    View ViewModel 项⽬Model
    图⽚
    项⽬名称
    概要
    上线状态
    浏览次数
    融资轮数
    领域
    融资⾦额
    imgeURL
    name
    desclabel
    status
    browse count
    amount
    company Area
    company money

    View Slide

  12. Layer
    View ViewModel 项⽬Model
    群头像
    群名称
    最近消息
    最近时间
    imgeURL
    GroupName
    lastmessage
    lastTime

    View Slide

  13. Advantage
    1.分层
    UI和业务逻辑相互隔离
    2.View可以复⽤
    View可以被不⽤业务中复⽤
    不⽤业务的ViewModel通过业务不⽤来注⼊到View中
    3.View可以相互灵活替换
    View可以根据不同业务逻辑,可以替换成各个不同的
    版本

    View Slide

  14. View Slide

  15. Layer
    View ViewModel
    ProJectDetailModel
    imageViewModel
    userViewModel
    ProJViewModel
    …………

    View Slide

  16. Problem
    1.组件之间的依赖
    组件之间可能有公共的数据源
    2.组件之间有先后关系
    组件之间可能存在相互调⽤的关系
    3.UI之间相互关联
    ……

    View Slide

  17. Message Bus
    GroupViewModel
    消息总线
    ChatViewModel
    ChatListViewModel
    发布群⼈数变更消息
    订阅消息 订阅消息

    View Slide

  18. Advantage
    消息总线
    数据库组件
    ViewModel
    ViewModel
    ViewModel
    ViewModel
    ⽹络组件
    Socket组件
    利⽤中介者
    模式,现实
    完全解耦

    View Slide

  19. Install
    开发对应的ViewModel
    下⼀个组件
    配置消息总线
    选择ViewModel
    开发新组件
    选择组件
    开始
    结束

    View Slide

  20. summary
    1.通过MVVM和组件化实现完全解耦,后期维护效率更⾼
    2.⼀个新业务需求的拆分
    将新需求拆分成各个组件View/ViewModel的开发,完
    成新需求只需要装配各个组件即可完成
    3.开发效率⼤⼤提⾼
    ……

    View Slide

  21. Thanks!

    View Slide