View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Discussion 2 - Guy Hoskinson

Part 1: Describe the differences between Structural, Creational and Behavioral design patterns

Structural Design Patterns
The structural design pattern focuses on class and object composition.
Structural class-creation patterns use inheritance to compose interfaces. Structural
object-patterns define new ways to compose objects to obtain added functionality.
The most widely known design patterns in this category are Adapter, Bridge,
Composite, Decorator, Facade, Flyweight, and Proxy.

Creational Design Patterns
The creational design pattern focuses on class instantiation. The pattern is commonly
subdivided into class-creation patterns and object-creation patterns. The class-creation
patterns use inheritance during instantiation, and the object-creation patterns use
delegation. Various design patterns featured under the category of creational design
patterns are Factory, Abstract Factory, Builder, Singleton, and Prototype.

Behavior Design Patterns
The behavioral design pattern focuses on creating software packages that follow common
human behavior. They implement a large chain of command with work and authority delegations
just like a complex workforce of people. The behavior design category has more patterns
than the other two, with Chain of Responsibility, Command, Interpreter, Iterator, Mediator,
Memento, Observer, State, Strategy, Template method, and Visitor.

Part 2 - Describe an Interesting Pattern

An interesting pattern I found was a Fašade, which is a pattern where a single class represents an entire subsystem. More specifically, it provides a unified interface to a set of interfaces in a subsystem. In real world applications it has a high frequency of use and has a very simple diagram, with a single class pointing to a giant subsystem. I think this design pattern could have potential in the project, for a lot of the UI work that needs to be done. A facade is a very useful design that allows a single UI to change without forcing the other UI's to change. A facade also works as an adapter or bridge when a client is controlling a separate object, or that the object's interface changes, or the changes need to be hidden from the clients of the object.

Link to this Page