CSC/ECE 517 Fall 2007/wiki1b 8 ktrk

From Expertiza_Wiki
Revision as of 01:43, 1 October 2007 by Rwkanne (talk | contribs)
Jump to navigation Jump to search

Introduction

What is the Strategy Pattern?

The strategy pattern is a proven object oriented design pattern that can be used to solve a common coupling problem often found in software development. Often during the development of compositional classes behaviors and algorithms can become mixed into the class during development without realizing that these behaviors or algorithms may change, become more complex, or additional behaviors may need to be added. These changes could be implemented by extending the class's behavior through inheritance, but over time this could result in an overly complex class hierarchy. The strategy pattern is a design template that can be used to decouple the behavior and algorithms from object being acted upon.

When to Use the Strategy Pattern

The strategy pattern is In the seminal book on design patterns by the Gang-of-Four (Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides), situations (also labeled "code smells" by Martin Fowler in Refactoring) are described where the strategy design pattern could be used to architect a better solution. These include:

1. A class that exhibits many behaviors

2. A class that uses many variations of an algorithm

3. A class that uses data structures related to a behavior but not the class

4. Many similar classes that differ only in a type of behavior

Advantages of the Strategy Pattern

1. Allows classes to change behavior at runtime or design time

2. Decreases code duplication among classes using variations of the same behavior

3. Behavior is better encapsulated by not being buried in its context

Strategy Pattern Implementation in Java and Ruby

Comparison of Implementations

References

http://en.wikipedia.org/wiki/Strategy_pattern