常见设计模式的解析和实现(C++)之十六-Strategy模式
http://sourcemaking.com/design_patterns/strategy/cpp/1http://www.vincehuston.org/dp/strategy.html
template<typename STRATEGY> class Stat { public: void readVector( int v[], int n ) { m_impl.sort( v, n ); m_min = v[0]; m_max = v[n-1]; m_median = v[n/2]; } ... private: STRATEGY m_impl; };
class SortBubble { void sort( int v[], int n ) { ... class SortShell { void sort( int v[], int n ) { ... int main( void ) { const int NUM = 9; int array[NUM]; srand( time(0) ); cout << "Vector: "; for (int i=0; i < NUM; ++i) { array[i] = rand() % 9 + 1; cout << array[i] << ' '; } cout << ' '; Stat<SortBubble> one; one.readVector( array, NUM ); cout << "min is " << one.getMin() << ", max is " << one.getMax() << ", median is " << one.getMedian() << ' '; Stat<SortShell> two; two.readVector( array, NUM ); cout << "min is " << two.getMin() << ", max is " << two.getMax() << ", median is " << two.getMedian() << ' '; } // Vector: 8 3 1 9 7 2 2 9 7 // Bubble: 1 2 2 3 7 7 8 9 9 // min is 1, max is 9, median is 7 // Shell: 1 2 2 3 7 7 8 9 9 // min is 1, max is 9, median is 7