Design Patterns Massimo Felici Massimo Felici Design Patterns - - PowerPoint PPT Presentation

design patterns
SMART_READER_LITE
LIVE PREVIEW

Design Patterns Massimo Felici Massimo Felici Design Patterns - - PowerPoint PPT Presentation

Design Patterns Massimo Felici Massimo Felici Design Patterns 2011 c 1 Design Patterns A design pattern is a standardised solution to a problem commonly encountered during object-oriented software development. A pattern is not a


slide-1
SLIDE 1

Design Patterns

Massimo Felici

Massimo Felici Design Patterns c 2011

slide-2
SLIDE 2

1

Design Patterns

  • A design pattern is a standardised solution to a problem commonly encountered

during object-oriented software development.

  • A pattern is not a piece of reusable code, but an overall approach that has

proven to be useful in several different systems already.

Massimo Felici Design Patterns c 2011

slide-3
SLIDE 3

Slide 1: References

  • Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design

Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.

  • Frank Buschmann, Eduardo Fernandez-Buglioni, Duane Hybertson, and Peter

Sommerlad, Security Patterns: Integrating Security and Systems Engineering, John Wiley & Sons, 2005.

slide-4
SLIDE 4

2

Contents of a Design Pattern

Design patterns usually include:

  • A pattern name
  • A statement of the problem solved by the pattern
  • A description of the solution
  • A list of advantages and liabilities (good and bad consequences)

Massimo Felici Design Patterns c 2011

slide-5
SLIDE 5

3

Design Patterns and Large-Scale Development

  • For a large team, design patterns are useful in creating a shared vocabulary.
  • First, everyone agrees on a standard reference text (or set of them).
  • Informal discussions, class naming, etc. can then use the pattern names.
  • Large groups can develop and name their own patterns.

Massimo Felici Design Patterns c 2011

slide-6
SLIDE 6

4

Design Pattern Examples

  • Creational Patterns:

– E.g. Abstract Factory, Factory Method, etc.

  • Structural Patterns:

– E.g. Composite, Proxy, etc.

  • Behavioral Patterns:

– E.g. Command, Visitor, etc. These are from the “Design Patterns” book (a.k.a. the Gang of Four book), but there are many other pattern collections

Massimo Felici Design Patterns c 2011

slide-7
SLIDE 7

5

Composite: Pattern

  • Composes objects into tree structures to represent part-whole hierarchies.
  • Lets clients treat individual objects and compositions of objects uniformly.

Massimo Felici Design Patterns c 2011

slide-8
SLIDE 8

6

Composite: Problem

  • User wants to be able to treat groups of things as a unit
  • Surrounding code would get complex if it were always conditional on whether

an object was a group or a primitive

  • Want to support hierarchical containers of containers

Massimo Felici Design Patterns c 2011

slide-9
SLIDE 9

7

Composite: Solution

Three classes:

  • Component: Shared interface between all, some shared implementation
  • Leaf: A primitive, implemented directly
  • Composite: for all children Components, do operation

Massimo Felici Design Patterns c 2011

slide-10
SLIDE 10

8

Composite: Example

Massimo Felici Design Patterns c 2011

slide-11
SLIDE 11

9

Composite: Advantages

  • Simple support for arbitrarily complex hierarchies
  • Clients can be simple — do not need to know about composition
  • New Composite and Leaf classes can be introduced without changing

Component

Massimo Felici Design Patterns c 2011

slide-12
SLIDE 12

10

Composite: Liabilities

  • Hard for client to predict/restrict what components might be encountered
  • Hard to test that client works for all components
  • Often need to define operations on Components that make sense only for some

Component types, e.g. Composites

Massimo Felici Design Patterns c 2011

slide-13
SLIDE 13

11

Summary

  • Many, many other patterns available
  • Design patterns help provide a library of solutions to common OO problems
  • Usually low level, but form vocabulary for a large team
  • Important to agree on definitions, apply consistently

Massimo Felici Design Patterns c 2011

slide-14
SLIDE 14

12

Required Readings

  • T. Winn, P. Calder. Is This a Pattern?. IEEE Software, 19(1):59-66, January/February, 2002.

http://dx.doi.org/10.1109/52.976942

  • F. Buschmann, K. Henney, D.C. Schmidt.

Past, Present, and Future Trends in Software

  • Patterns. IEEE Software, 24(4):31-37, July, 2007. http://dx.doi.org/10.1109/MS.2007.

115

  • Erich Gamma, Richard Helm, Ralph E. Johnson, and John M. Vlissides. 1993. Design Patterns:

Abstraction and Reuse of Object-Oriented Design. In Proceedings of the 7th European Conference on Object-Oriented Programming (ECOOP ’93), Oscar Nierstrasz (Ed.). Springer- Verlag, London, UK, UK, 406-431. http://dx.doi.org/10.1007/3-540-47910-4_21

Massimo Felici Design Patterns c 2011

slide-15
SLIDE 15

13

Suggested Readings

  • D. Manolescu, W. Kozaczynski, A. Miller, J. Hogg. The Growing Divide in the Patterns World.

IEEE Software, 24(4):61-67, July 2007. http://dx.doi.org/10.1109/MS.2007.120

  • M.P. Cline. The pros and cons of adopting and applying design patterns in the real world.

Communications of the ACM, 39(10):47-49, October, 1996. http://dx.doi.org/10.1145/ 236156.236167

  • L. D’Adderio, R. Dewar, A. Lloyd, P. Stevens.

Has the pattern emperor any clothes? A controversy in three acts. In ACM/SIGSOFT Software Engineering Notes, Jan/Feb 2002. http://dx.doi.org/10.1145/566493.1148026

Massimo Felici Design Patterns c 2011