SlideShare a Scribd company logo
Design Patterns:
Strategy + NullObject
Ombu Labs, July 2016
Object Oriented
Design
Design
Patterns
Elements of
Reusable Object-
Oriented Software
Strategy
Classic
Example
Payment Gateway
Example
NullObject
Design Patterns for
Better Communication
Apply Design Patterns
Wisely
But Be Careful
Applying more Design
Patterns than you need
is an anti-pattern
Thank you!
Questions?

More Related Content

Viewers also liked

Sociedad de la Información y el Conocimiento - Versión ampliada
Sociedad de la Información y el Conocimiento - Versión ampliadaSociedad de la Información y el Conocimiento - Versión ampliada
Sociedad de la Información y el Conocimiento - Versión ampliada
Luis Eduardo Pelaez Valencia
 
How does electricity affects our life1
How does electricity affects our life1How does electricity affects our life1
How does electricity affects our life1
safa-medaney
 
M.C.M i M.C.D
M.C.M i M.C.DM.C.M i M.C.D
M.C.M i M.C.D
Alexandre Ruiz Gallego
 
Leccion de informatica ii
Leccion de informatica iiLeccion de informatica ii
Leccion de informatica ii
marigabby
 
Farmacêutico - Pref. Mun. de Serra/ES
Farmacêutico - Pref. Mun. de Serra/ESFarmacêutico - Pref. Mun. de Serra/ES
Farmacêutico - Pref. Mun. de Serra/ES
Thiago Santos
 
Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...
Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...
Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...
CNV Vakcentrale
 
Política y Niveles de Educcación
Política y Niveles de EduccaciónPolítica y Niveles de Educcación
Política y Niveles de Educcación
Luis Eduardo Pelaez Valencia
 
Analisis de riesgo informatico con OCTAVE
Analisis de riesgo informatico con OCTAVEAnalisis de riesgo informatico con OCTAVE
Analisis de riesgo informatico con OCTAVE
Fluidsignal Group S.A.
 
RFID and its application
RFID and its applicationRFID and its application
RFID and its application
pangszeming
 
Gimnospermas
GimnospermasGimnospermas
Gimnospermas
Simone Miranda
 
Open Source Recap (Dec '15) by etagwerker
Open Source Recap (Dec '15) by etagwerkerOpen Source Recap (Dec '15) by etagwerker
Open Source Recap (Dec '15) by etagwerker
Ombu Labs, The Lean Software Boutique
 
Bitpagos Ruby Gem
Bitpagos Ruby GemBitpagos Ruby Gem
Trabajando en Código Abierto
Trabajando en Código AbiertoTrabajando en Código Abierto
Trabajando en Código Abierto
Ombu Labs, The Lean Software Boutique
 
Rspec Tweaks
Rspec TweaksRspec Tweaks
Lecture Atmospheric Temperature
Lecture Atmospheric TemperatureLecture Atmospheric Temperature
Lecture Atmospheric Temperature
Nagina Nighat
 
Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»
Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»
Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»
Електронні книги Ранок
 
Русский язык 8 (8) «Односоставные предложения»
Русский язык 8 (8) «Односоставные предложения»Русский язык 8 (8) «Односоставные предложения»
Русский язык 8 (8) «Односоставные предложения»
Електронні книги Ранок
 
Masculinity and Misogyny in the Digital Age
Masculinity and Misogyny in the Digital AgeMasculinity and Misogyny in the Digital Age
Masculinity and Misogyny in the Digital Age
Brandwatch
 
Valora, A.C.
Valora, A.C.Valora, A.C.
Valora, A.C.
Miguel Rivera Lona
 

Viewers also liked (19)

Sociedad de la Información y el Conocimiento - Versión ampliada
Sociedad de la Información y el Conocimiento - Versión ampliadaSociedad de la Información y el Conocimiento - Versión ampliada
Sociedad de la Información y el Conocimiento - Versión ampliada
 
How does electricity affects our life1
How does electricity affects our life1How does electricity affects our life1
How does electricity affects our life1
 
M.C.M i M.C.D
M.C.M i M.C.DM.C.M i M.C.D
M.C.M i M.C.D
 
Leccion de informatica ii
Leccion de informatica iiLeccion de informatica ii
Leccion de informatica ii
 
Farmacêutico - Pref. Mun. de Serra/ES
Farmacêutico - Pref. Mun. de Serra/ESFarmacêutico - Pref. Mun. de Serra/ES
Farmacêutico - Pref. Mun. de Serra/ES
 
Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...
Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...
Bijlage 3 bij afronding Sociaal Akkoord brief aan dec cao partijen 24 nov 201...
 
Política y Niveles de Educcación
Política y Niveles de EduccaciónPolítica y Niveles de Educcación
Política y Niveles de Educcación
 
Analisis de riesgo informatico con OCTAVE
Analisis de riesgo informatico con OCTAVEAnalisis de riesgo informatico con OCTAVE
Analisis de riesgo informatico con OCTAVE
 
RFID and its application
RFID and its applicationRFID and its application
RFID and its application
 
Gimnospermas
GimnospermasGimnospermas
Gimnospermas
 
Open Source Recap (Dec '15) by etagwerker
Open Source Recap (Dec '15) by etagwerkerOpen Source Recap (Dec '15) by etagwerker
Open Source Recap (Dec '15) by etagwerker
 
Bitpagos Ruby Gem
Bitpagos Ruby GemBitpagos Ruby Gem
Bitpagos Ruby Gem
 
Trabajando en Código Abierto
Trabajando en Código AbiertoTrabajando en Código Abierto
Trabajando en Código Abierto
 
Rspec Tweaks
Rspec TweaksRspec Tweaks
Rspec Tweaks
 
Lecture Atmospheric Temperature
Lecture Atmospheric TemperatureLecture Atmospheric Temperature
Lecture Atmospheric Temperature
 
Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»
Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»
Німецька мова. 8(8) клас, 8(4) клас. Практичне заняття на тему «Телебачення»
 
Русский язык 8 (8) «Односоставные предложения»
Русский язык 8 (8) «Односоставные предложения»Русский язык 8 (8) «Односоставные предложения»
Русский язык 8 (8) «Односоставные предложения»
 
Masculinity and Misogyny in the Digital Age
Masculinity and Misogyny in the Digital AgeMasculinity and Misogyny in the Digital Age
Masculinity and Misogyny in the Digital Age
 
Valora, A.C.
Valora, A.C.Valora, A.C.
Valora, A.C.
 

More from Ombu Labs, The Lean Software Boutique

A short guide to git's interactive rebase
A short guide to git's interactive rebaseA short guide to git's interactive rebase
A short guide to git's interactive rebase
Ombu Labs, The Lean Software Boutique
 
CSS3 Animations
CSS3 AnimationsCSS3 Animations
Gotchas and Stack Traces in Ruby
Gotchas and Stack Traces in RubyGotchas and Stack Traces in Ruby
Gotchas and Stack Traces in Ruby
Ombu Labs, The Lean Software Boutique
 
Mocks vs. Stubs
Mocks vs. StubsMocks vs. Stubs
Intro to Active Record
Intro to Active RecordIntro to Active Record
Relational Databases 101
Relational Databases 101Relational Databases 101
Relational Databases 101
Ombu Labs, The Lean Software Boutique
 
The 7 Days Open Source Challenge
The 7 Days Open Source ChallengeThe 7 Days Open Source Challenge
The 7 Days Open Source Challenge
Ombu Labs, The Lean Software Boutique
 
Basic memoization in Ruby
Basic memoization in RubyBasic memoization in Ruby
Basic memoization in Ruby
Ombu Labs, The Lean Software Boutique
 
Testing 101: Three Rules for Testing at Ombu Labs
Testing 101: Three Rules for Testing at Ombu Labs Testing 101: Three Rules for Testing at Ombu Labs
Testing 101: Three Rules for Testing at Ombu Labs
Ombu Labs, The Lean Software Boutique
 
Recycling at Ombu Labs
Recycling at Ombu LabsRecycling at Ombu Labs
Guide to Services & Technology at Ombu Labs
Guide to Services & Technology at Ombu LabsGuide to Services & Technology at Ombu Labs
Guide to Services & Technology at Ombu Labs
Ombu Labs, The Lean Software Boutique
 

More from Ombu Labs, The Lean Software Boutique (11)

A short guide to git's interactive rebase
A short guide to git's interactive rebaseA short guide to git's interactive rebase
A short guide to git's interactive rebase
 
CSS3 Animations
CSS3 AnimationsCSS3 Animations
CSS3 Animations
 
Gotchas and Stack Traces in Ruby
Gotchas and Stack Traces in RubyGotchas and Stack Traces in Ruby
Gotchas and Stack Traces in Ruby
 
Mocks vs. Stubs
Mocks vs. StubsMocks vs. Stubs
Mocks vs. Stubs
 
Intro to Active Record
Intro to Active RecordIntro to Active Record
Intro to Active Record
 
Relational Databases 101
Relational Databases 101Relational Databases 101
Relational Databases 101
 
The 7 Days Open Source Challenge
The 7 Days Open Source ChallengeThe 7 Days Open Source Challenge
The 7 Days Open Source Challenge
 
Basic memoization in Ruby
Basic memoization in RubyBasic memoization in Ruby
Basic memoization in Ruby
 
Testing 101: Three Rules for Testing at Ombu Labs
Testing 101: Three Rules for Testing at Ombu Labs Testing 101: Three Rules for Testing at Ombu Labs
Testing 101: Three Rules for Testing at Ombu Labs
 
Recycling at Ombu Labs
Recycling at Ombu LabsRecycling at Ombu Labs
Recycling at Ombu Labs
 
Guide to Services & Technology at Ombu Labs
Guide to Services & Technology at Ombu LabsGuide to Services & Technology at Ombu Labs
Guide to Services & Technology at Ombu Labs
 

Recently uploaded

みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 

Recently uploaded (20)

みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 

Design Patterns: Strategy and NullObject