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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
CSC307 Lecture 06
javiergs
PRO
0
680
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
AgentCoreとHuman in the Loop
har1101
5
230
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
710
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
120
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
CSC307 Lecture 09
javiergs
PRO
1
830
今から始めるClaude Code超入門
448jp
8
8.6k
AI & Enginnering
codelynx
0
110
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.9k
Paper Plane (Part 1)
katiecoart
PRO
0
4k
Mind Mapping
helmedeiros
PRO
0
79
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
250
How to Ace a Technical Interview
jacobian
281
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Between Models and Reality
mayunak
1
180
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
140
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
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