Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
iOS Architecture
Search
halfrost
August 25, 2016
Programming
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOS Architecture
halfrost
August 25, 2016
More Decks by halfrost
See All by halfrost
Segment Tree Basics
halfrost
0
1.1k
Redis multi-data center two-way synchronization
halfrost
0
780
Redis design ideas and usage specifications
halfrost
0
610
Golang message streaming practice in Eleme
halfrost
0
580
SQL practical optimization
halfrost
0
500
Fundamentals of Cryptography
halfrost
0
430
The practice of spatial index in geographic service
halfrost
0
520
Getting started with Machine Learning
halfrost
0
370
Functional Reactive Programming
halfrost
0
450
Other Decks in Programming
See All in Programming
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
650
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
400
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
520
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
600
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.2k
SREの越境 / SRE Collaboration
y0hgi
2
290
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
260
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
310
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Between Models and Reality
mayunak
4
480
Code Reviewing Like a Champion
maltzj
528
40k
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!