[YIDLUG] Computer/Software Design patterns


Published on

Computer Design Patterns

Presented BY: Joel Kaufman Sr Software Engineer, Web Admin
Presented BY: Joel Kaufman Sr Software Engineer, Web Admin
Joel is familiar with C, C#, java, JavaScript, PHP, VB, vb.net, front-end and back-end developer, great engineering experience, developed and maintained great projects, his passion to design and structure is exceptional.

Description: ever found yourself in middle of a big project, that the code looks complicated, hard to debug, hard to add new features, or take out existing features ?
ever wondered how a event system works on a operating system ?
ever found yourself that a lot of code solves similar problems but can't make just a function to solve it ?

YIDLUG is a Yiddish speaking Linux (and other open source software) Users Group,
check us out at http://www.meetup.com/yidlug

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

[YIDLUG] Computer/Software Design patterns

  1. 1. Welcome to YIDLUG
  3. 3. Agenda • Do you OOPs? • Design Patterns? Why • Design Patterns? What • Design Patterns? How
  4. 4. why care about all of this
  5. 5. Example of a speaker
  6. 6. The speakers check list Speak the language Know how to design a speech
  7. 7. The programmers check list Know a computer language Understand a program design
  8. 8. Programming without design
  9. 9. Or worse !
  10. 10. Getting started Refresh on Object Oriented Programming (OOP)
  11. 11. Normal Classes vs Abstract Classes vs Interfaces Normal Class: This is a normal class  Abstract Class: These cannot be instantiated directly. They may provide partial implementations and exists solely for the purpose of inheritance. Interfaces: Defines a contract. Concrete implementations needs to implement each property and method as per contract.
  12. 12. Million Dollar Question? What is Why?
  13. 13. Normal Class vs Abstract Class? If a particular class is a entity which is not required to be instantiated by the application directly, go for Abstract Class Employee can be abstract class
  14. 14. Abstract Class vs Interfaces? If a particular class contains any default behavior, go for Abstract Class If every concrete class has its own implementation, go for Interfaces Work – Management, Programming
  15. 15. MOVIES & ACTORS Shahrukh KhanSalman Khan riding bike Actors in a Movie
  16. 16. IS-A Inheritance Shahrukh Khan is an ACTOR HAS-A Composition Movie has ACTORS CAN-DO Interfaces Salman Khan can DRIVE BIKE IS-A vs HAS-A vs CAN-DO IS-A Inheritance Shahrukh Khan is an ACTOR HAS-A Composition Movie has ACTORS CAN-DO Interfaces Salman Khan can DRIVE BIKE
  17. 17. What is a Pattern • An 'element of reusable software’ • A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object- oriented systems. • It describes the problem, the solution, when to apply the solution, and its consequences. • It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.
  18. 18. History of Software Patterns
  19. 19. What Wikipedia says, • A design pattern is a general repeatable solution to a commonly occurring problem in software design. • A design pattern is not a finished design that can be transformed directly into code. • Algorithms are not thought of as design patterns.
  20. 20. Let’s understand the purpose
  21. 21. Let’s understand design patterns by purpose
  22. 22. Let’s understand the purpose + Creational Patterns Structural Patterns Final Product Behavioral Patterns
  23. 23. Design Patterns as per their PURPOSE
  24. 24. Creational Patterns
  25. 25. Factory Method
  26. 26. Factory Method Provide an interface for the creation of objects. Allow subclasses to “decide” which class to instantiate.
  27. 27. Factory Method Define an interface for creating an object, but let subclass decide which class to instantiate • Prevents creation of any additional instances, while simultaneously allowing global access • Creation can be delayed until it is actually required
  28. 28. Abstract Factory Pattern
  29. 29. Abstract Factory Pattern Provide an interface for creating families of related or dependent objects without specifying their concrete classes. • Provides creation of families of related or dependent objects without specifying their concrete class
  30. 30. Abstract Factory Povide an interface for creating families of related or dependent objects. A factory for factories.
  31. 31. Singleton Ensure a class only has one instance, and provide a global point of access to it.
  32. 32. Prototype Make variations on copies of a basic- object.
  33. 33. Structural Patterns
  34. 34. Façade Pattern
  35. 35. Façade Pattern Provide a unified interface to set of interfaces in a subsystem. • Is generally one side of the exterior of a building, especially the front • Origin from a FRENCH word means “face” or “front”
  36. 36. Façade Pattern Its all about the service
  37. 37. Decorator Pattern
  38. 38. Decorator Pattern Attach additional responsibilities to an object dynamically. • Flexible alternative to subclassing for extending functionality • Allows dynamic and transparent addition and removal of responsibilities without affecting object simple actress (act) in role of modern girl (go out and act) in role of homely girl (be in home and act)
  39. 39. Composite Pattern
  40. 40. Composite Pattern Compose objects into tree structures to represent part-whole hierarchies • When dealing with collections of objects, there are often operations that are appropriate for both a single object and the entire collection • Treats individual objects and composition of objects uniformly Example: a)Every object “IS-A” shape b)Every shape “HAS-A” draw behavior
  41. 41. Adapter Pattern
  42. 42. Adapter Pattern Convert the interface of a class into another interface clients expect • Lets classes work together that couldn’t work otherwise • Works good for making compliance Application FrameworkAdapter Legacy Component
  43. 43. Decorator vs Adapter Decorator looks like Adapter which “decorates” an existing class to make it compatible. Though, Decorator doesn’t wants you to decorate every method in the Adapted class. But who has stopped from doing it. “Never underestimate the power of a developer”
  44. 44. Decorator vs Façade Façade is a way of hiding a complex system inside a simpler interface, whereas Decorator adds function by wrapping a class.
  45. 45. Behavioural Patterns
  46. 46. Command Pattern
  47. 47. Command Pattern Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests. • If all commands can service a specific request, they can be entertained by the invoker • Concrete command performs the action on Receiver • Encapsulate method invocation One Receiver and Multiple actions
  48. 48. Strategy Pattern
  49. 49. Strategy Pattern Define strategies for a performing a behavior and change them dynamically as per requirement • This lets the algorithm vary independently from clients that uses it • It is about choice, which affects outcomes
  50. 50. Template Method
  51. 51. Template Method Define the skeleton of an algorithm in an operations, deferring some steps to subclass • Main algorithm skeleton is defined in a base class and subclasses can then plug in their own details without affecting the algorithm itself • Uses Inheritance – Abstract Class defines the template (algorithm) and Concrete class manages the implementation. • Template uses the implementation on demand
  52. 52. Strategy Pattern vs Template Method • Strategy allows callers to change the algorithm or order of steps whereas Template method allow steps to be modified • Strategy uses Interfaces whereas Template method uses Inheritance
  53. 53. CONTENT STOLEN FROM  BOOKS: Head First Design Patterns Design Patterns in C# Design Patterns WEBSITES: Wikipedia, MSDN, doFactory and GOOGLE
  54. 54. Answers, anybody?