Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOS Application Architecture
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Oliver Eikemeier
October 29, 2015
Programming
1
120
iOS Application Architecture
Zalando teck talk held at October 29, 2015
Oliver Eikemeier
October 29, 2015
Tweet
Share
More Decks by Oliver Eikemeier
See All by Oliver Eikemeier
One weird trick that will make your development life easier forever
eik
2
100
Other Decks in Programming
See All in Programming
Apache Iceberg V3 and migration to V3
tomtanaka
0
160
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
540
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.2k
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.3k
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
450
CSC307 Lecture 02
javiergs
PRO
1
780
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
600
Implementation Patterns
denyspoltorak
0
280
Featured
See All Featured
Building an army of robots
kneath
306
46k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
GraphQLとの向き合い方2022年版
quramy
50
14k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Crafting Experiences
bethany
1
48
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
First, design no harm
axbom
PRO
2
1.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
75
GitHub's CSS Performance
jonrohan
1032
470k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Transcript
Modular iOS Application Architecture 1 — © Zalando SE, 2015
Modules To be adaptable to evolving needs it is desirable
to build complex system by assembling highly cohesive loosely coupled modules, where cost of redesigning each of such adoptable modules (or replacing by a better modules) must be minimized.CBSE CBSE Loosely based on Wikipedia, Component-based software engineering 2 — © Zalando SE, 2015
Modules should be - Developed independently - Build independently -
Tested independently - Changed or replaced independently 3 — © Zalando SE, 2015
Building Blocks Part 1 How can we assemble an App
out of independent modules? 4 — © Zalando SE, 2015
Building Blocks Part 1 → The Dependency Inversion PrincipleDIP (It’s
the D in the SOLIDOOD principles) OOD Robert C. Martin ‘05, Principles of OOD DIP Robert C. Martin ‘96, objectmentor.com/resources/articles/dip.pdf 5 — © Zalando SE, 2015
The Dependency Inversion Principle High level modules should not depend
upon low level modules. Both should depend upon abstractions.Abs Abs Abstractions: Interfaces, Protocols 6 — © Zalando SE, 2015
The Dependency Inversion Principle Abstractions should not depend upon details.Det
Details should depend upon abstractions. Det Details: Implementation details 7 — © Zalando SE, 2015
Building Blocks Part 2 → Inversion of ControlIoC IoC Martin
Fowler ‘04, martinfowler.com/articles/injection.html 8 — © Zalando SE, 2015
Inversion of Control Just declare static dependencies, leave object graph
composition to the framework 9 — © Zalando SE, 2015
Case Study We use a Service Locator as an IoC
container → But Address the Common Problems of a Service Locator 10 — © Zalando SE, 2015
Case Study Sample App: How do we do it? 11
— © Zalando SE, 2015
Inversion of Control → No need for Mocking → Decorators
for AOP-style cross-cutting concerns → Configuration changes in deployed apps → Feature Flags 12 — © Zalando SE, 2015
Case Study Sample App: Decorate me. 13 — © Zalando
SE, 2015
Is It Any Good? Yes! 14 — © Zalando SE,
2015
Is It Any Good? Yes! → Proven: Used over the
last two years → First Use: Monolithic Objective-C legacy App 15 — © Zalando SE, 2015
Is It Any Good? Yes! → Makes development fast, modules
testable → Plays well with Continuous Integration 16 — © Zalando SE, 2015
Buzzword compliance In object-oriented programming, the use of interfaces as
an architectural pattern to construct modules is known as API-First Design. 17 — © Zalando SE, 2015
Buzzword compliance Microservices is a software architecture style in which
complex applications are composed of small, independent modules communicating with each other. These services are small, highly decoupled and focus on doing a small task, facilitating a modular approach to system-building. 18 — © Zalando SE, 2015
Thank You! Questions?A A The Answer is Yes, now what's
Your Question? 19 — © Zalando SE, 2015