SlideShare uma empresa Scribd logo
1 de 50
Design
PatternsClaudio Lassala
Jonathan Birkholz
Houston Techfest 2010
http://tinyurl.com/htf2010-patterns
Claudio
Lassala
Jonathan
Birkholzclaudio@eps-software.com
ClaudioLassala.workpress.com
@claudiolassala
EPS Software Corp
jb@chaione.com
theabsentmindedcoder.com
@rookieone
wizardsofsmart.net
github.com/RookieOne
bitbucket.org/rookieone
Chaione
EPS
As an attendee to this session, you are entitled to a free CODE subscription! 
www.codemag.com/subscribe/htf10
Software Projects
Consulting
Training
Publishers of CODE Magazine
The .Net Knowledge Powerho
Chaione
Strategy and Planning
User Experience Design
Mobile Solutions
Web Solutions
:url => snipr.com/virtualaltnet
:website => www.virtualbrownbag.com
:when => every Thursday from 12pm – 1pm
Where everyone can come talk and learn
about software development
Learnsomething about design patterns
Apply
Teach
your knowledge at your day job
others what you have learned
Different Backgrounds
Same Problem
is the only constant in
software development
Change
change in software is
time consuming
expensive
fail
and is why projects
successful
best practicif only there were some
on how to manage change so that our software projects can
be
Design
Patternsdescribe a concept
or process on an
abstract level.
These patterns arose
from repeated
successful
applications on how
to design software to
adapt to change
Design patterns also provide a conciseform of communication among professionals
Every song has
structure…
•Intros
•Verses
•Bridges
•Choruses
•Interludes
Ok… so…. I’m going to pretend to
hand off the ball but really I am going to
pass it. The hope is the defense will be
confused for a few seconds so that can
create an opening and one of you guys
can get open
Play Action Pass?
meanwhile a well organized team is
already running their play
More effective commu
If design patterns are known best
practices why are there no
frameworks or libraries for design
patterns?
more about
form and
context than
code
allegory of the cave
Object Oriented
Programming
Abstraction
Encapsulation
Polymorphism
Inheritance
Princip
lesProgram to interface, not to implementation
Strive for loosely coupled designs between objects
that interact
Favor composition over inheritance
SOLID
Principles => form => design pattern
Cash
Register
Learning through code is best
LOOK AT CODE
REFACTOR
Command Pattern
is a design pattern in which an object is
used to represent and encapsulate all the
information needed to execute an operation
at a later time
with commands you can also…
Queue
Log
Undo
commands in the form of a macro command
thereby handling complexity through composition
command execution for future
diagnosis of problems and bugs
more easily support
Experiences with
Command Pattern
Where the Command
Pattern can be found in
.Net
REFACTOR
Façade Pattern
provides a unified interface to a set of
interfaces in a subsystem. To put it simply, it
makes the complex easy.
inside Claudio’s house
Too many remotes! Ugh!
subsystems facade
Ah… one remote to ru
Experiences with Façade
Pattern
Where the Façade
Pattern can be found in
.Net
REFACTOR
Observer Pattern
defines a dependency between objects so
that when one object changes, dependent
objects can be notified
Publishers + Subscribers = Observer Pattern
Stop Pestering…
Let subject call
observers
actively
querying state
on subject
passi
ve
Hollywood
PrincipleDon’t call us, we’ll call you.
Register
Scanner
add item item scanned
Experiences with
Observer Pattern
Where the Observer
Pattern can be found in
.Net
REFACTOR
Adapter Pattern
converts the interface of a class into another
interface the clients expect
Experiences with Adapter
Pattern
Where the Adapter
Pattern can be found in
.Net
Facade Adapteversus
Proxy Pattern
provides a surrogate or placeholder for
another object to control access to it.
Proxy Real
REFACTOR
Strategy Pattern
defines a family of algorithms, encapsulates
each one, and makes them interchangeable.
This lets the algorithm vary independently
from clients that use it.
Texas
Lousiana
Oklahoma
Default
Switch
Texas
Lousiana
Oklahoma
Default
Strategies
King Queen Bishop Rook Knight Pawn
how are they different?
Experiences with Strategy
Pattern
Where the Strategy
Pattern can be found in
.Net
REFACTOR
Factory Pattern
provides an interface for creating families of
related or dependent objects
Types of
Factories
Factory Method
Factory Class
Abstract Factory
Experiences with Factory
Pattern
Where the Factory
Pattern can be found in
.Net
Other Patterns
• Decorator
• Mediator
• Iterator
• Builder
• Composition
• Visitor
• Chain of Responsibility
Presentation Patterns
• MVC
• MVVM
• MVP
Bookshelf
Questions
http://tinyurl.com/htf2010-patterns
claudio@eps-software.com
ClaudioLassala.workpress.com
@claudiolassala
EPS Software Corp
jb@chaione.com
theabsentmindedcoder.com
@rookieone
wizardsofsmart.net
github.com/RookieOne
bitbucket.org/rookieone
Chaione
Join us at www.VirtualBrownBag.com every Thursday 12pm -1pm

Mais conteúdo relacionado

Semelhante a Techfest design patterns

From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018Christophe Rochefolle
 
Building frameworks: from concept to completion
Building frameworks: from concept to completionBuilding frameworks: from concept to completion
Building frameworks: from concept to completionRuben Goncalves
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Designing Powerful Web Applications - Monterey
Designing Powerful Web Applications - MontereyDesigning Powerful Web Applications - Monterey
Designing Powerful Web Applications - MontereyDave Malouf
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneEdorian
 
PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018
PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018
PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018Wellingtone
 
Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Puppet
 
NET Event - Migrating WinForm
NET Event - Migrating WinFormNET Event - Migrating WinForm
NET Event - Migrating WinFormRaffaele Garofalo
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDave Malouf
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachBen Stopford
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for EnterprisesWade Wegner
 
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Soroosh Khodami
 
Foss4Africa Paul Scott keynote
Foss4Africa Paul Scott keynoteFoss4Africa Paul Scott keynote
Foss4Africa Paul Scott keynotePaul Scott
 
Puppet Camp Duesseldorf 2014: Luke Kanies - Puppet Keynote
Puppet Camp Duesseldorf 2014: Luke Kanies - Puppet KeynotePuppet Camp Duesseldorf 2014: Luke Kanies - Puppet Keynote
Puppet Camp Duesseldorf 2014: Luke Kanies - Puppet KeynoteNETWAYS
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrowDaniel Fisher
 
Building products people actually can use – why all developers need to unders...
Building products people actually can use – why all developers need to unders...Building products people actually can use – why all developers need to unders...
Building products people actually can use – why all developers need to unders...Cyber-Duck
 
CloudShare Dev and Test SPSTCDC
CloudShare Dev and Test SPSTCDCCloudShare Dev and Test SPSTCDC
CloudShare Dev and Test SPSTCDCChris Riley ☁
 
Synchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsSynchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsTogakangaroo
 

Semelhante a Techfest design patterns (20)

From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Building frameworks: from concept to completion
Building frameworks: from concept to completionBuilding frameworks: from concept to completion
Building frameworks: from concept to completion
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Designing Powerful Web Applications - Monterey
Designing Powerful Web Applications - MontereyDesigning Powerful Web Applications - Monterey
Designing Powerful Web Applications - Monterey
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
 
PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018
PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018
PMOtto.ai - Personalised Project Management Through AI - FuturePMO 2018
 
Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018Introduction to Puppet Enterprise 10/03/2018
Introduction to Puppet Enterprise 10/03/2018
 
NET Event - Migrating WinForm
NET Event - Migrating WinFormNET Event - Migrating WinForm
NET Event - Migrating WinForm
 
Refactoring 2 The Max
Refactoring 2 The MaxRefactoring 2 The Max
Refactoring 2 The Max
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAs
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
 
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
Why And When Should We Consider Stream Processing In Our Solutions Teqnation ...
 
Foss4Africa Paul Scott keynote
Foss4Africa Paul Scott keynoteFoss4Africa Paul Scott keynote
Foss4Africa Paul Scott keynote
 
Puppet Camp Duesseldorf 2014: Luke Kanies - Puppet Keynote
Puppet Camp Duesseldorf 2014: Luke Kanies - Puppet KeynotePuppet Camp Duesseldorf 2014: Luke Kanies - Puppet Keynote
Puppet Camp Duesseldorf 2014: Luke Kanies - Puppet Keynote
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
 
Building products people actually can use – why all developers need to unders...
Building products people actually can use – why all developers need to unders...Building products people actually can use – why all developers need to unders...
Building products people actually can use – why all developers need to unders...
 
CloudShare Dev and Test SPSTCDC
CloudShare Dev and Test SPSTCDCCloudShare Dev and Test SPSTCDC
CloudShare Dev and Test SPSTCDC
 
Synchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsSynchronized Development for Distributed Teams
Synchronized Development for Distributed Teams
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

Último (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Techfest design patterns