SlideShare a Scribd company logo
Object Oriented Programming
in Swift
Ch 3
Single Responsibility Principle
Dependency Inversion Principle
Interface Segregation Principle
Sai Li @ Yowoo Tech.
2016/1/9
References
• Agile Software Development: Principles, Patterns,
and Practice ( : )

by Robert C. Martin
• Fundamental Object Oriented Programming 

by Hsuan-Tien Lin
• 

by Teddy Chen
• Essential Object-Oriented Programming

by Josh Ko
Cohesion & Coupling
Cohesion
• Degree to which the elements of a module belong
together
• The force that cause a module or a class to change
Coupling
• Degree of interdependence between software
modules
Cohesion & Coupling
Cohesion & Coupling
Goal: high cohesion, low coupling
S.O.L.I.D
• SRP: Single Responsibility Principle
• OCP: Open Closed Principle
• LSP: Liskov Substitution Principle
• ISP: Interface Segregation Principle
• DIP: Dependency Inversion Principle
Single Responsibility Principle
“A class should have one,
and only one, reason to change.”
SRP
SRP
Responsibility
• A reason for change
• More than one responsibility
• coupled responsibilities
• Fragile Design
Example
Needless Complexity? 

When?
Persistence
TDD
Single Responsibility Principle
• One of the simplest and hardest principle
• Software Design: The art of separating responsibility
S.O.L.I.D
• SRP: Single Responsibility Principle
• OCP: Open Closed Principle
• LSP: Liskov Substitution Principle
• ISP: Interface Segregation Principle
• DIP: Dependency Inversion Principle
Dependency Inversion Principle
1. High-level modules should not depend on low-
level modules. 

Both should depend on abstractions
2. Abstractions should not depend on details. Details
should depend on abstractions.
Inversion of Control
low level change -> high level change
Hollywood Principle: Don’t call me, I’ll call you
Inversion of Control
What they need
Switch
+ switch()
SwitchableDevicePolicy
Object Oriented Programming Ch3 SRP, DIP, ISP
– Robert C. Martin
“Depend on abstractions,
not on concretions.”
- Design Pattern , GoF
“Program to an interface,
not an implementation.”
S.O.L.I.D
• SRP: Single Responsibility Principle
• OCP: Open Closed Principle
• LSP: Liskov Substitution Principle
• ISP: Interface Segregation Principle
• DIP: Dependency Inversion Principle
Interface Pollution
Interface Pollution
Adaptor
Interface Segregation Principle
“Client should NOT be forced to depend
upon interfaces that they do not use”
Glass door
Separate Clients == Separate Interfaces
Object Oriented Programming Ch3 SRP, DIP, ISP
Object Oriented Programming Ch3 SRP, DIP, ISP
“Fat” Interface
• More than one responsibility
• Coupled responsibilities
• Fragile Design
• Clients depend on what they need only
Recap
• SRP: A class should have one, and only one, reason to change.
• DIP: Depend on abstractions, not on concretions.
• ISP: Make fine grained interfaces that are client specific
Recap Liskov Violation
Liskov Substitution Principle
Subtypes must be substitutable for their base
types.
Rectangle & Square Problem
Object Oriented Programming Ch3 SRP, DIP, ISP
Segment
Line
Ray
Line: isOn(point: Intercept) == true
LineSegment: isOn(point: Intercept) == ?
Object Oriented Programming Ch3 SRP, DIP, ISP
Object Oriented Programming Ch3 SRP, DIP, ISP
It’s the end
of the beginning
– Sai Li
“Live for interfaces, not implementations,
except Lovers”
References
• https://en.wikipedia.org/wiki/Cohesion_(computer_science)
• https://drive.google.com/file/d/0ByOwmqah_nuGNHEtcU5OekdDMkk/view?pli=1
• http://teddy-chen-tw.blogspot.tw/2011/12/1.html
• http://www.cs.utexas.edu/users/downing/papers/DIP.1996.pdf
• http://howard-lyrics.blogspot.tw/2011/04/test.html
• http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
• https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Laptop-hard-drive-exposed.jpg/220px-Laptop-hard-drive-
exposed.jpg
• http://sce2.umkc.edu/BIT/burrise/pl/design/cohesion-coupling-abstract.gif
• http://freefeast.info/wp-content/uploads//2013/08/cohesion-vs.-coupling.jpg
• http://cdn.mos.cms.futurecdn.net/7047e9b7bfca2b3b6f352495885e77c2.jpg
• https://upload.wikimedia.org/wikipedia/commons/8/8d/DIPLayersPattern.png
• http://flylib.com/books/4/444/1/html/2/images/11_3.jpg
• http://flylib.com/books/4/444/1/html/2/images/11_4.jpg
• http://stg-tud.github.io/sedc/Lecture/ws13-14/Images/DIP-RegulatorBase.png
• http://stg-tud.github.io/sedc/Lecture/ws13-14/Images/DIP-RegulatorDIPCompliant.png
• http://www.coolmath.com/sites/cmat/files/images/03-lines-01.gif
• http://flylib.com/books/4/444/1/html/2/images/12_2.jpg
• http://flylib.com/books/4/444/1/html/2/images/12_1.jpg
Ad

Recommended

SOLID Principles
SOLID Principles
Surendra Shukla
 
SOLID Principles
SOLID Principles
akbarashaikh
 
Managing state in modern React web applications
Managing state in modern React web applications
Jon Preece
 
Beyond Fault Tolerance with Actor Programming
Beyond Fault Tolerance with Actor Programming
Fabio Tiriticco
 
Object Oriented Programming in Swift Ch1 - Inheritance
Object Oriented Programming in Swift Ch1 - Inheritance
Chihyang Li
 
Shamaeva fearless sourcing on LinkedIn 19.2.2014
Shamaeva fearless sourcing on LinkedIn 19.2.2014
Irina Shamaeva
 
Advanced Search Techniques for Sourcing Ninjas | Talent Connect Vegas 2013
Advanced Search Techniques for Sourcing Ninjas | Talent Connect Vegas 2013
LinkedIn Talent Solutions
 
Lou Adler & LinkedIn Master Class: Sourcing Strategies & Out-of-the-box Boole...
Lou Adler & LinkedIn Master Class: Sourcing Strategies & Out-of-the-box Boole...
LinkedIn Talent Solutions
 
SOLID_Principles_Explained_Presentation.pptx
SOLID_Principles_Explained_Presentation.pptx
SahanaRV2
 
Software Design Principles (SOLID)
Software Design Principles (SOLID)
ASIMYILDIZ
 
Birth of a developer
Birth of a developer
Piyush Rahate
 
SOLID principles-Present
SOLID principles-Present
Quang Nguyen
 
Apply SOLID Design principles to javascript code with immediate function invo...
Apply SOLID Design principles to javascript code with immediate function invo...
Anuradha Bandara
 
Solid principles
Solid principles
Kumaresh Chandra Baruri
 
Solid principles
Solid principles
Monica Rodrigues
 
Solid Principles
Solid Principles
Gaurav Mishra
 
Software Design Principles
Software Design Principles
Ocean Dong
 
SOLID Principles in OOPS ooooooooo.pptx
SOLID Principles in OOPS ooooooooo.pptx
banjaaring
 
OO Design Principles
OO Design Principles
Anju Kanjirathingal
 
Solid
Solid
savithaks2211
 
Solid as OOP abstraction
Solid as OOP abstraction
Pawel Klimczyk
 
Design Pattern lecture 1
Design Pattern lecture 1
Julie Iskander
 
Solid principle
Solid principle
muhammadali0014
 
SOLID in PHP
SOLID in PHP
Ba Thanh Huynh
 
Solid-Principles
Solid-Principles
Aniket G
 
Design poo my_jug_en_ppt
Design poo my_jug_en_ppt
agnes_crepet
 
Single Responsibility Principle
Single Responsibility Principle
Eyal Golan
 
Shooting at a Moving Target
Shooting at a Moving Target
İrem Küçükali
 
Image Style Transfer and AI on iOS Mobile App
Image Style Transfer and AI on iOS Mobile App
Chihyang Li
 
Image style transfer and iOS CoreML, Vision Frameworks
Image style transfer and iOS CoreML, Vision Frameworks
Chihyang Li
 

More Related Content

Similar to Object Oriented Programming Ch3 SRP, DIP, ISP (20)

SOLID_Principles_Explained_Presentation.pptx
SOLID_Principles_Explained_Presentation.pptx
SahanaRV2
 
Software Design Principles (SOLID)
Software Design Principles (SOLID)
ASIMYILDIZ
 
Birth of a developer
Birth of a developer
Piyush Rahate
 
SOLID principles-Present
SOLID principles-Present
Quang Nguyen
 
Apply SOLID Design principles to javascript code with immediate function invo...
Apply SOLID Design principles to javascript code with immediate function invo...
Anuradha Bandara
 
Solid principles
Solid principles
Kumaresh Chandra Baruri
 
Solid principles
Solid principles
Monica Rodrigues
 
Solid Principles
Solid Principles
Gaurav Mishra
 
Software Design Principles
Software Design Principles
Ocean Dong
 
SOLID Principles in OOPS ooooooooo.pptx
SOLID Principles in OOPS ooooooooo.pptx
banjaaring
 
OO Design Principles
OO Design Principles
Anju Kanjirathingal
 
Solid
Solid
savithaks2211
 
Solid as OOP abstraction
Solid as OOP abstraction
Pawel Klimczyk
 
Design Pattern lecture 1
Design Pattern lecture 1
Julie Iskander
 
Solid principle
Solid principle
muhammadali0014
 
SOLID in PHP
SOLID in PHP
Ba Thanh Huynh
 
Solid-Principles
Solid-Principles
Aniket G
 
Design poo my_jug_en_ppt
Design poo my_jug_en_ppt
agnes_crepet
 
Single Responsibility Principle
Single Responsibility Principle
Eyal Golan
 
Shooting at a Moving Target
Shooting at a Moving Target
İrem Küçükali
 
SOLID_Principles_Explained_Presentation.pptx
SOLID_Principles_Explained_Presentation.pptx
SahanaRV2
 
Software Design Principles (SOLID)
Software Design Principles (SOLID)
ASIMYILDIZ
 
Birth of a developer
Birth of a developer
Piyush Rahate
 
SOLID principles-Present
SOLID principles-Present
Quang Nguyen
 
Apply SOLID Design principles to javascript code with immediate function invo...
Apply SOLID Design principles to javascript code with immediate function invo...
Anuradha Bandara
 
Software Design Principles
Software Design Principles
Ocean Dong
 
SOLID Principles in OOPS ooooooooo.pptx
SOLID Principles in OOPS ooooooooo.pptx
banjaaring
 
Solid as OOP abstraction
Solid as OOP abstraction
Pawel Klimczyk
 
Design Pattern lecture 1
Design Pattern lecture 1
Julie Iskander
 
Solid-Principles
Solid-Principles
Aniket G
 
Design poo my_jug_en_ppt
Design poo my_jug_en_ppt
agnes_crepet
 
Single Responsibility Principle
Single Responsibility Principle
Eyal Golan
 

More from Chihyang Li (20)

Image Style Transfer and AI on iOS Mobile App
Image Style Transfer and AI on iOS Mobile App
Chihyang Li
 
Image style transfer and iOS CoreML, Vision Frameworks
Image style transfer and iOS CoreML, Vision Frameworks
Chihyang Li
 
Machine Learning in Swift
Machine Learning in Swift
Chihyang Li
 
Image style transfer & AI on App
Image style transfer & AI on App
Chihyang Li
 
iOS Vision framework
iOS Vision framework
Chihyang Li
 
Design Patterns in Swift Ch5 Abstract Factory Builder
Design Patterns in Swift Ch5 Abstract Factory Builder
Chihyang Li
 
Design patterns in Swift Ch4: Iterator & Template Method
Design patterns in Swift Ch4: Iterator & Template Method
Chihyang Li
 
Swift map & flatMap
Swift map & flatMap
Chihyang Li
 
Swift Optional ??
Swift Optional ??
Chihyang Li
 
Design Pattern in Swift Ch2 Strategy, Decorator
Design Pattern in Swift Ch2 Strategy, Decorator
Chihyang Li
 
Design Pattern Ch3 in Swift Composite
Design Pattern Ch3 in Swift Composite
Chihyang Li
 
Design Patterns in Swift Ch1 Factory Method
Design Patterns in Swift Ch1 Factory Method
Chihyang Li
 
Scrum & Kanban Introduction
Scrum & Kanban Introduction
Chihyang Li
 
Design Patterns in Swift ch0 Introduction
Design Patterns in Swift ch0 Introduction
Chihyang Li
 
Object Oriented Programming in Swift Ch2 Polymorphism, OCP, LSP
Object Oriented Programming in Swift Ch2 Polymorphism, OCP, LSP
Chihyang Li
 
Object Oriented Programming in Swift Ch0 - Encapsulation
Object Oriented Programming in Swift Ch0 - Encapsulation
Chihyang Li
 
Apple Swift API Design Guideline
Apple Swift API Design Guideline
Chihyang Li
 
Swift capture
Swift capture
Chihyang Li
 
DevOps 2016 summit
DevOps 2016 summit
Chihyang Li
 
Slack introduction
Slack introduction
Chihyang Li
 
Image Style Transfer and AI on iOS Mobile App
Image Style Transfer and AI on iOS Mobile App
Chihyang Li
 
Image style transfer and iOS CoreML, Vision Frameworks
Image style transfer and iOS CoreML, Vision Frameworks
Chihyang Li
 
Machine Learning in Swift
Machine Learning in Swift
Chihyang Li
 
Image style transfer & AI on App
Image style transfer & AI on App
Chihyang Li
 
iOS Vision framework
iOS Vision framework
Chihyang Li
 
Design Patterns in Swift Ch5 Abstract Factory Builder
Design Patterns in Swift Ch5 Abstract Factory Builder
Chihyang Li
 
Design patterns in Swift Ch4: Iterator & Template Method
Design patterns in Swift Ch4: Iterator & Template Method
Chihyang Li
 
Swift map & flatMap
Swift map & flatMap
Chihyang Li
 
Swift Optional ??
Swift Optional ??
Chihyang Li
 
Design Pattern in Swift Ch2 Strategy, Decorator
Design Pattern in Swift Ch2 Strategy, Decorator
Chihyang Li
 
Design Pattern Ch3 in Swift Composite
Design Pattern Ch3 in Swift Composite
Chihyang Li
 
Design Patterns in Swift Ch1 Factory Method
Design Patterns in Swift Ch1 Factory Method
Chihyang Li
 
Scrum & Kanban Introduction
Scrum & Kanban Introduction
Chihyang Li
 
Design Patterns in Swift ch0 Introduction
Design Patterns in Swift ch0 Introduction
Chihyang Li
 
Object Oriented Programming in Swift Ch2 Polymorphism, OCP, LSP
Object Oriented Programming in Swift Ch2 Polymorphism, OCP, LSP
Chihyang Li
 
Object Oriented Programming in Swift Ch0 - Encapsulation
Object Oriented Programming in Swift Ch0 - Encapsulation
Chihyang Li
 
Apple Swift API Design Guideline
Apple Swift API Design Guideline
Chihyang Li
 
DevOps 2016 summit
DevOps 2016 summit
Chihyang Li
 
Slack introduction
Slack introduction
Chihyang Li
 
Ad

Recently uploaded (20)

wAIred_RabobankIgniteSession_12062025.pptx
wAIred_RabobankIgniteSession_12062025.pptx
SimonedeGijt
 
How Insurance Policy Management Software Streamlines Operations
How Insurance Policy Management Software Streamlines Operations
Insurance Tech Services
 
Smadav Pro 2025 Rev 15.4 Crack Full Version With Registration Key
Smadav Pro 2025 Rev 15.4 Crack Full Version With Registration Key
joybepari360
 
What is data visualization and how data visualization tool can help.pptx
What is data visualization and how data visualization tool can help.pptx
Varsha Nayak
 
Code and No-Code Journeys: The Coverage Overlook
Code and No-Code Journeys: The Coverage Overlook
Applitools
 
SAP PM Module Level-IV Training Complete.ppt
SAP PM Module Level-IV Training Complete.ppt
MuhammadShaheryar36
 
FME as an Orchestration Tool - Peak of Data & AI 2025
FME as an Orchestration Tool - Peak of Data & AI 2025
Safe Software
 
Enable Your Cloud Journey With Microsoft Trusted Partner | IFI Tech
Enable Your Cloud Journey With Microsoft Trusted Partner | IFI Tech
IFI Techsolutions
 
Migrating to Azure Cosmos DB the Right Way
Migrating to Azure Cosmos DB the Right Way
Alexander (Alex) Komyagin
 
How to Choose the Right Web Development Agency.pdf
How to Choose the Right Web Development Agency.pdf
Creative Fosters
 
What is data visualization and how data visualization tool can help.pdf
What is data visualization and how data visualization tool can help.pdf
Varsha Nayak
 
Transmission Media. (Computer Networks)
Transmission Media. (Computer Networks)
S Pranav (Deepu)
 
Software Testing & it’s types (DevOps)
Software Testing & it’s types (DevOps)
S Pranav (Deepu)
 
Porting Qt 5 QML Modules to Qt 6 Webinar
Porting Qt 5 QML Modules to Qt 6 Webinar
ICS
 
Who will create the languages of the future?
Who will create the languages of the future?
Jordi Cabot
 
Rierino Commerce Platform - CMS Solution
Rierino Commerce Platform - CMS Solution
Rierino
 
Folding Cheat Sheet # 9 - List Unfolding 𝑢𝑛𝑓𝑜𝑙𝑑 as the Computational Dual of ...
Folding Cheat Sheet # 9 - List Unfolding 𝑢𝑛𝑓𝑜𝑙𝑑 as the Computational Dual of ...
Philip Schwarz
 
Smart Financial Solutions: Money Lender Software, Daily Pigmy & Personal Loan...
Smart Financial Solutions: Money Lender Software, Daily Pigmy & Personal Loan...
Intelli grow
 
Zoneranker’s Digital marketing solutions
Zoneranker’s Digital marketing solutions
reenashriee
 
dp-700 exam questions sample docume .pdf
dp-700 exam questions sample docume .pdf
pravkumarbiz
 
wAIred_RabobankIgniteSession_12062025.pptx
wAIred_RabobankIgniteSession_12062025.pptx
SimonedeGijt
 
How Insurance Policy Management Software Streamlines Operations
How Insurance Policy Management Software Streamlines Operations
Insurance Tech Services
 
Smadav Pro 2025 Rev 15.4 Crack Full Version With Registration Key
Smadav Pro 2025 Rev 15.4 Crack Full Version With Registration Key
joybepari360
 
What is data visualization and how data visualization tool can help.pptx
What is data visualization and how data visualization tool can help.pptx
Varsha Nayak
 
Code and No-Code Journeys: The Coverage Overlook
Code and No-Code Journeys: The Coverage Overlook
Applitools
 
SAP PM Module Level-IV Training Complete.ppt
SAP PM Module Level-IV Training Complete.ppt
MuhammadShaheryar36
 
FME as an Orchestration Tool - Peak of Data & AI 2025
FME as an Orchestration Tool - Peak of Data & AI 2025
Safe Software
 
Enable Your Cloud Journey With Microsoft Trusted Partner | IFI Tech
Enable Your Cloud Journey With Microsoft Trusted Partner | IFI Tech
IFI Techsolutions
 
How to Choose the Right Web Development Agency.pdf
How to Choose the Right Web Development Agency.pdf
Creative Fosters
 
What is data visualization and how data visualization tool can help.pdf
What is data visualization and how data visualization tool can help.pdf
Varsha Nayak
 
Transmission Media. (Computer Networks)
Transmission Media. (Computer Networks)
S Pranav (Deepu)
 
Software Testing & it’s types (DevOps)
Software Testing & it’s types (DevOps)
S Pranav (Deepu)
 
Porting Qt 5 QML Modules to Qt 6 Webinar
Porting Qt 5 QML Modules to Qt 6 Webinar
ICS
 
Who will create the languages of the future?
Who will create the languages of the future?
Jordi Cabot
 
Rierino Commerce Platform - CMS Solution
Rierino Commerce Platform - CMS Solution
Rierino
 
Folding Cheat Sheet # 9 - List Unfolding 𝑢𝑛𝑓𝑜𝑙𝑑 as the Computational Dual of ...
Folding Cheat Sheet # 9 - List Unfolding 𝑢𝑛𝑓𝑜𝑙𝑑 as the Computational Dual of ...
Philip Schwarz
 
Smart Financial Solutions: Money Lender Software, Daily Pigmy & Personal Loan...
Smart Financial Solutions: Money Lender Software, Daily Pigmy & Personal Loan...
Intelli grow
 
Zoneranker’s Digital marketing solutions
Zoneranker’s Digital marketing solutions
reenashriee
 
dp-700 exam questions sample docume .pdf
dp-700 exam questions sample docume .pdf
pravkumarbiz
 
Ad

Object Oriented Programming Ch3 SRP, DIP, ISP