11.10.2013 Views

Design Patterns

Design Patterns

Design Patterns

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

EXAMPLE: “STRATEGY”<br />

Classification object/behavioral<br />

Intent Define a family of algorithms, encapsulate each one, and make them<br />

interchangeable. Strategy lets the algorithm vary independently from<br />

clients that use it.<br />

Also Known as Policy<br />

Structure<br />

Context<br />

ContextInterface()<br />

strategy<br />

ConcreteStrategyA<br />

AlgorithmInterface()<br />

53<br />

Strategy<br />

AlgorithmInterface()<br />

ConcreteStrategyB<br />

AlgorithmInterface()<br />

55<br />

ConcreteStrategyC<br />

AlgorithmInterface()<br />

Applicability Use the Strategy pattern when<br />

• many related classes differ only in their behavior. Strategy provides a<br />

way to configure a class with one of many behaviors.<br />

• you need different variants of an algorithm.<br />

• an algorithm uses data that clients should not know about.<br />

• a class defines many behaviors, and these appear as multiple<br />

Participants<br />

conditional statements in its operations.<br />

• Strategy<br />

54<br />

– declares an interface common to all supported algorithms. Context<br />

uses this interface to call algorithm defined by a ConcreteStrategy.<br />

• ConcreteStrategy<br />

– implements the algorithm using the Strategy interface.<br />

• Context<br />

– is configured with a ConcreteStrategy object<br />

– may define an interface that lets Strategy access its data<br />

Related <strong>Patterns</strong> Flyweight<br />

56

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!