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 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
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOS Application Architecture
Zalando teck talk held at October 29, 2015
Oliver Eikemeier
October 29, 2015
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
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
ActionController meets Protocol Buffers
sorah
0
520
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
560
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.1k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
APNsからLive Activityを開始する話
yumnumm
0
170
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
気持ちぃ〜角丸 Squircle
ryu1013
0
310
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
1k
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.5k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Test your architecture with Archunit
thirion
2
2.4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
A Tale of Four Properties
chriscoyier
163
24k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Prompt Engineering for Job Search
mfonobong
0
520
Paper Plane
katiecoart
PRO
5
54k
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