Design Patterns What Is a Pattern

Design Patterns What Is a Pattern

Design Patterns What is a Pattern • Current use comes from the work of the architect Christopher Alexander • Alexander studied ways to improve the process of designing buildings and urban areas • “Each pattern is a three-part rule, which expresses a relation between a certain context, a problem and a solution.” • Hence, the common definition of a pattern: “A solution to a problem in a context.” • Patterns can be applied to many different areas of human endeavour, including software development 1 What is a Design 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 A Pattern Language, 1977 The goal of patterns within the software community is to create a body of literature to help software developers resolve recurring problems encountered throughout all of software development. Patterns help create a shared language for communicating insight and experience about these problems and their solutions. -- Brad Appleton 2 Why Patterns? • "Designing object-oriented software is hard and designing reusable object-oriented software is even harder." - Erich Gamma • Experienced designers reuse solutions that have worked in the past • Well-structured object-oriented systems have recurring patterns of classes and objects • Knowledge of the patterns that have worked in the past allows a designer to be more productive and the resulting designs to be more flexible and reusable Software Patterns History • 1987 - Cunningham and Beck used Alexander’s ideas to develop a small pattern language for Smalltalk • 1990 - The Gang of Four (Gamma, Helm, Johnson and Vlissides) begin work compiling a catalog of design patterns • 1991 - Bruce Anderson gives first Patterns Workshop at OOPSLA • 1993 - Kent Beck and Grady Booch sponsor the first meeting of what is now known as the Hillside Group • 1994 - First Pattern Languages of Programs (PLoP) conference • 1995 - The Gang of Four (GoF) publish the Design Patterns book 3 Who is the Gang of Four [GoF] •Wrote the book: Design Patterns in 1995 – Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides – So standard other books and web site refer to page numbers – Facade (185) - Facade pattern on page 185 in the book • Authors Became know as the Gang of Four – Shorthand reference is [GoF] • The book catalogs 23 major design patterns • There are other patterns – but GoF is the first reference • Provided a template for cataloging new patterns 4 What are Patterns? • Describes characteristics – Of a recurring problem – And a successful solution – Provides a template to implement the solution • Simple, elegant, reusable, extensible solutions – Patterns define the interaction between objects • Expand our technical vocabulary • Once we “get” a pattern, normal reactions are – Why didn’t I think of that? –“AHa!” GoF Design Patterns • “A design pattern names, abstracts, and identifies key aspects of a common design structure that makes it useful for creating a reusable object-oriented design.” • The GoF design patterns are “descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.” 5 GoF Classification Of Design Patterns • Purpose - what a pattern does – Creational Patterns • Concern the process of object creation – Structural Patterns • Deal with the composition of classes and objects – Behavioral Patterns • Deal with the interaction of classes and objects • Scope - what the pattern applies to – Class Patterns • Focus on the relationships between classes and their subclasses • Involve inheritance reuse – Object Patterns • Focus on the relationships between objects • Involve composition reuse GoF Essential Elements Of Design Patterns • Pattern Name – Having a concise, meaningful name for a pattern improves communication among developers • Problem – What is the problem and context where we would use this pattern? – What are the conditions that must be met before this pattern should be used? • Solution – A description of the elements that make up the design pattern – Emphasizes their relationships, responsibilities and collaborations – Not a concrete design or implementation; rather an abstract description • Consequences – The pros and cons of using the pattern – Includes impacts on reusability, portability, extensibility 6 GoF Pattern Template • Pattern Name and Classification – A good , concise name for the pattern and the pattern's type • Intent – Short statement about what the pattern does • Also Known As – Other names for the pattern • Motivation – A scenario that illustrates where the pattern would be useful • Applicability – Situations where the pattern can be used GoF Pattern Template (Continued) • Structure – A graphical representation of the pattern • Participants – The classes and objects participating in the pattern • Collaborations – How to do the participants interact to carry out their responsibilities? • Consequences – What are the pros and cons of using the pattern? • Implementation – Hints and techniques for implementing the pattern 7 GoF Pattern Template (Continued) • Sample Code – Code fragments for a sample implementation • Known Uses – Examples of the pattern in real systems • Related Patterns – Other patterns that are closely related to the pattern GoF Notation • The GoF book uses the Object Modeling Technique (OMT) notation for class and object diagrams: 8 UML Notation UML Notation (Continued) 9 Patterns in LEARNING Sequence • http://mahemoff.com/paper/software/learningGoFPatterns/ • Easy GoF Patterns • Intermediate GoF Patterns – Façade(185) – Proxy(207) – Singleton(127) – Decorator(175) like Proxy – Adaptor(139) – Mediator(273) – Bridge(151) like Adaptor – Iterator(257) – Observer(293) – Strategy(315) • Advanced GoF Patterns – Command(233) like Strategy – Composite(163) – Builder(97) like Strategy – Interpreter(243) like Composite – State(305) like Strategy – Chain Of Responsibility(223) – Template Method(325) like Strategy alternative to Strategy – Abstract Factory(87) – Factory Method(107) – Flyweight(195) like Template Method – Visitor(331) – Memento(283) like Command – Prototype(117) Façade (185) • Think of a travel agent – You need air, hotel, rental car – You make one call to your agent (facade) – The agent calls air line, hotel and rental agency • Simple gateway into a complex structure 10 Singleton(127) • a child may view Father as a singleton and Mother as another Singleton Mediator (273) • Think of a stock exchange as a mediator – Mediates among public companies, investors, regulators and tax collectors and others – limiting their direct interaction – Allows colleagues to be loosely coupled 11 Iterator (257) • Loop through a collection • You host a dinner party and (President) is at the table. You may want to introduce him first ! • The collection of people has a fixed order, but the iteration strategy is flexible. Strategy (315) • A recipe is a strategy • Provide a single interface for Quick Sort, Shell Sort, and Merge Sort 12 Adaptor (139) • Adaptor or Wrapper pattern • Power adaptor! • Adapter lets classes work together that couldn't otherwise because of incompatible interfaces Observer (293) • When you (Observer) subscribe to a magazine (Subject), you get each new issue (Push model) • When one object changes state, all its dependents are notified and updated 13 Composite (163) • Recursive, tree-like data structure • An Org Chart can be built from recursive data • Composite lets clients treat individual objects and compositions of objects uniformly Benefits of Design Patterns • Capture expertise and make it accessible to non-experts in a standard form • Facilitate communication among developers by providing a common language • Make it easier to reuse successful designs and avoid alternatives that diminish reusability • Facilitate design modifications • Improve design documentation • Improve design understandability 14 Design Pattern Books • Design Patterns: Elements of Reusable Object-Oriented Software, Gamma, Helm, Johnson and Vlissides, Addison-Wesley, 199 • AntiPatterns, Brown, Malveau, McCormick and Mowbray, Wiley, 1998 • Java Design Patterns - A Tutorial, James W. Cooper, Addison- Wesley, 2000 • Design Patterns Java Workbook, Steven John Metsker, Addison- Wesley, 2002 • Applied Java Patterns, Stephen Stelting and Olav Maassen, Prentice Hall, 2002 • Head First Design Patterns, Freeman and Freeman, O'Reilly, 2004 • Refactoring To Patterns, Joshua Kerievsky, Addison-Wesley, 2005 Anti Patterns • A survey of hundreds of corporate software development projects indicated that five out of six software projects are considered unsuccessful. About a third of software projects are cancelled. The remaining projects delivered software that was typically twice the expected budget and took twice as long to developed as originally planned [Johnson 95]. These repeated failures, or "negative solutions", are highly valuable, however in that they provide us with useful knowledge of what does not work, and through study: why. Such study, in the vernacular of Design Patterns can be classified as the study of AntiPatterns. 15 New Context ? You have options … New Context Make up Use something that something worked before Get “Pattern” “AntiPattern” Creative! Wing it! Benefits Consequences Be Spontaneous exceed exceed Consequences Benefits Random benefits and Consequences 16.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    16 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us