Tuesday, July 6, 2010

Pattern Study - Structural

Design Pattern Grouping:

  1. Structural Patterns
    1. Adapter
    2. Bridge
    3. Composite
    4. Decorator
    5. Facade
    6. Flyweight
    7. Proxy
  2. Creational Patterns
  3. Behavioral Patterns
Links:


Pattern Study - The Future of

I got this from Judith Bishop book, C# Design Patterns, page 256.

Some problems with design patterns:

  • Traceability - hard to maintain when programming language doesn't support the underlying pattern.  Pattern can be spread across several classes.
  • Reusability - design pattern is not encapsulated and must be reimplemented each time it is used.  {What about a design pattern template, several template classes that ease the implementation of a pattern?}
  • Writability - methods with trivial behavior not support be language can be tedious to write and maintain.
  • Maintainability - multiple patterns can lead to a large cluster of mutually dependent classes causing high coupling between the classes.
The current research is how to transform design patterns into reusable artifacts so the programmer doesn't have to implement them over and over again.  {Addressing all the above problems.}

Pattern Study - UML

Class 
  • Class
  • - attribute
  • + operations()
Interface
  • <<interface>>
  • IClass
  • +operations()
Note
  • descriptive text
Package (grouping of classes and interfaces
  • Package
Inheritance
  • A <--- B (horizontal) : B inherits from A
Realization
  • A <-- B (horizontal): B implements A
Association
  • A --- B: A and B call and access each other's elements
Association (one way)
  • A --> B: A can call and access B's elements, but no vice versa
Aggregation
  • A <>--- B:  A has a B, and B can outlive A
Composition
  • A <<>>--- B:  A has a B, and B depends on A.