Definition-defines a family of algorithms, encapsulate each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
Key points: separate different parts/behaviors and encapsulate each part/behavior
Advantage: not only does it let you encapsulate a family of algorithms into their own set of classes, but it also lets you change behavior at runtime .
Example1 (quote from First Head In Design Pattern) :
//inteface code

































































































//display result































Example2 (talk about PetShop4.0 developed by MS):
When inserting Order, PetShop System enable user customize which strategy he want to use, synchronization or asynchronization. i.e. the insert-order strategy is changeable at runtime, determined by user himself.