1 / 41

Design Patterns

Design Patterns. Weslei A. de T. Marinho. Talk Outline. Pattern Definition GRASP Patterns GoF Patterns GoF Patterns Classification Creational Patterns Structural Patterns. What is a Pattern?.

Download Presentation

Design Patterns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.


Presentation Transcript

  1. Design Patterns Weslei A. de T. Marinho

  2. Talk Outline • Pattern Definition • GRASP Patterns • GoF Patterns • GoF Patterns Classification • Creational Patterns • Structural Patterns

  3. What is a Pattern? "Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice“ (Christopher Alexander)

  4. What is a Pattern? • “Pattern is a named and well-known problem/solution pair that can be applied in new contexts, with advice on how to apply it in novel situations and discussion of its trade-offs, implementations, variations, and so forth.” (Craig Larman)

  5. Why use Patterns? • A pattern addresses a recurring design problem that arises in specific design situations, and presents a solution to it. • Patterns document existing, well-proven design experience. • Patterns identify and specify abstractions that are above the level of single classes and instances, or of components. • Patterns provide a common vocabulary and understanding for design principles • Patterns are a means of documenting software architectures.

  6. Why use Patterns? • Patterns support the construction of software with defined properties. • Patterns help you build complex and heterogeneous software architectures. • Patterns help you to manage software complexity.

  7. Types of Patterns • GRASP Patterns • Architectural Patterns • Design Patterns • Idioms • … • E.g.: Usability Patterns • Anti-Patterns

  8. Basic Pattern Metamodel Pattern Problem Solution name * Consequence

  9. GoF Pattern Metamodel SampleCode ExampleDomain Intent * * A.K.A * Issues * Pattern relPatterns * name Motivation (ExampleScenario) classification Implementation Issue Consequence Participant Applicability (Problem) * * * Structure (SolutionGraphicalDescription) ClassDiagram BehavioralStructure (Collaboration) StaticStructure ObjectDiagram

  10. GRASP Patterns • GRASP stands for General Responsibility Assignment Software Pattern • Will be presented the following GRASP Patterns: • Information Expert • Creator • Low Coupling • High Cohesion

  11. Creator B is a creator of A objects. If more than one option applies, usually prefer a class B which aggregates or contains class A.

  12. Creator – Who creates the Square?

  13. Information Expert Problem: Who knows about a Square object, given a key?

  14. Information Expert How to distribute the responsibilities for obtain the sale’s total?

  15. Low Coupling Given following classes: What is better for a makePayment design? A: B: In practice, the level of coupling alone can't be considered in isolation from other principles such as Expert and High Cohesion. Nevertheless, it is one factor to consider in improving a design.

  16. High Cohesion

  17. High Cohesion • Low cohesion implies on code: • Hard to comprehend • Hard to reuse • Hard to maintain • Delicate; constantly affected by change In practice, the level of cohesion alone can't be considered in isolation from other responsibilities and other principles such as Expert and Low Coupling.

  18. GoF Patterns Classification Table 1:  Designpatternspace

  19. Abstract Factory • Intent: Provide an interface for creating families of related or dependent objects without specifying their concrete classes. • Also Knows As: Kit

  20. Abstract Factory - Motivation

  21. Abstract Factory - Structure

  22. Builder • Intent: Separate the construction of a complex object from its representation so that the same construction process can create different representations.

  23. Builder

  24. Builder

  25. Builder

  26. Builder

  27. Sigleton • Intent: Ensure a class only has one instance, and provide a global point of access to it.

  28. Singleton

  29. Adapter

  30. Adapter

  31. Adapter

  32. Adapter

  33. Adapter

  34. Facade • Intent: Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.

  35. Facade

  36. Facade

  37. Facade

  38. Facade

  39. Facade

  40. Don’t ask!!!

  41. Bibliography • Freeman, E., Sierra, K., Bates, B. 2004. Head First Design Patterns. O’Reilly Media, Inc. • Gamma, E., Helm, R., Johnson, R., Vlissides, J. 1995. Design Patterns Elements of Reusable Object-Oriented Software. Addison-Wesley Pub Co. • Larman, C. 2004. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Third Edition. Pearson Education, Inc. • Schmidt, D., Stal, M., Rohnert, H., Buschmann, F. 1996. PATTERN-ORIENTED SOFTWARE ARCHITECTURE VOLUME 1: A System of Patterns. John Wiley & Sons Ltd.

More Related