Strategy Pattern

In computer programming, the strategy pattern (also known as the policy pattern) is a particular software design pattern, whereby algorithms behaviour can be selected at runtime. Formally speaking, the strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

For instance, a class that performs validation on incoming data may use a strategy pattern to select a validation algorithm based on the type of data, the source of the data, user choice, and/or other discriminating factors. These factors are not known for each case until run-time, and may require radically different validation to be performed. The validation strategies, encapsulated separately from the validating object, may be used by other validating objects in different areas of the system (or even different systems) without code duplication.

The essential requirement in the programming language is the ability to store a reference to some code in a data structure and retrieve it. This can be achieved by mechanisms such as the native function pointer, the first-class function, classes or class instances in object-oriented programming languages, or accessing the language implementation's internal storage of code via reflection.

Read more about Strategy Pattern:  Example, Strategy and Open/closed Principle

Famous quotes containing the words strategy and/or pattern:

    To a first approximation, the intentional strategy consists of treating the object whose behavior you want to predict as a rational agent with beliefs and desires and other mental states exhibiting what Brentano and others call intentionality.
    Daniel Clement Dennett (b. 1942)

    The worthiest man to be known, and for a pattern to be presented to the world, he is the man of whom we have most certain knowledge. He hath been declared and enlightened by the most clear-seeing men that ever were; the testimonies we have of him are in faithfulness and sufficiency most admirable.
    Michel de Montaigne (1533–1592)