Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOS Architecture
Search
halfrost
August 25, 2016
Programming
0
280
iOS Architecture
halfrost
August 25, 2016
Tweet
Share
More Decks by halfrost
See All by halfrost
Segment Tree Basics
halfrost
0
980
Redis multi-data center two-way synchronization
halfrost
0
620
Redis design ideas and usage specifications
halfrost
0
470
Golang message streaming practice in Eleme
halfrost
0
450
SQL practical optimization
halfrost
0
430
Fundamentals of Cryptography
halfrost
0
330
The practice of spatial index in geographic service
halfrost
0
430
Getting started with Machine Learning
halfrost
0
320
Functional Reactive Programming
halfrost
0
340
Other Decks in Programming
See All in Programming
AIコーディングエージェント(skywork)
kondai24
0
160
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
220
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
TestingOsaka6_Ozono
o3
0
150
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
160
tparseでgo testの出力を見やすくする
utgwkk
2
210
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
2
880
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
240
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
380
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
400
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
1k
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
Featured
See All Featured
A better future with KSS
kneath
240
18k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.2k
Typedesign – Prime Four
hannesfritz
42
2.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
How STYLIGHT went responsive
nonsquared
100
6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Music & Morning Musume
bryan
46
7k
Raft: Consensus for Rubyists
vanstee
141
7.2k
BBQ
matthewcrist
89
9.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Transcript
⽅创iOS 架构漫谈 于德志
Problem 代码复⽤率低 业务之间的差异性⼤ ⼯程内各个模块之间有相当⼀些 代码是拷⻉的,或者说仅仅是个 别参数不同,⼤体都相同的代 码,在⼯程中出现的太多,导致 app包的体积明显变⼤ 由于整个项⽬中可以公共的中间件或者组 件⽬前还⽐较少,导致⼀些业务之间差异
性本来不是很⼤,由于重⽤的东⻄少,导 致基本上所有业务都是新的,很多都是重 头开始,导致了开发效率低
Analysis 先看看现在的构架
Now
Actual
How to solve 业务之间差异性⼤ 提⾼代码复⽤率 分层 代码复⽤率低 改
How to solve 业务功能 分层化 组件化 层次结构 改
None
expect
How to solve
Layer View ViewModel 项⽬Model 图⽚ 项⽬名称 概要 上线状态 浏览次数 融资轮数
领域 融资⾦额 imgeURL name desclabel status browse count amount company Area company money
Layer View ViewModel 项⽬Model 群头像 群名称 最近消息 最近时间 imgeURL GroupName
lastmessage lastTime
Advantage 1.分层 UI和业务逻辑相互隔离 2.View可以复⽤ View可以被不⽤业务中复⽤ 不⽤业务的ViewModel通过业务不⽤来注⼊到View中 3.View可以相互灵活替换 View可以根据不同业务逻辑,可以替换成各个不同的 版本
None
Layer View ViewModel ProJectDetailModel imageViewModel userViewModel ProJViewModel …………
Problem 1.组件之间的依赖 组件之间可能有公共的数据源 2.组件之间有先后关系 组件之间可能存在相互调⽤的关系 3.UI之间相互关联 ……
Message Bus GroupViewModel 消息总线 ChatViewModel ChatListViewModel 发布群⼈数变更消息 订阅消息 订阅消息
Advantage 消息总线 数据库组件 ViewModel ViewModel ViewModel ViewModel ⽹络组件 Socket组件 利⽤中介者
模式,现实 完全解耦
Install 开发对应的ViewModel 下⼀个组件 配置消息总线 选择ViewModel 开发新组件 选择组件 开始 结束
summary 1.通过MVVM和组件化实现完全解耦,后期维护效率更⾼ 2.⼀个新业务需求的拆分 将新需求拆分成各个组件View/ViewModel的开发,完 成新需求只需要装配各个组件即可完成 3.开发效率⼤⼤提⾼ ……
Thanks!