设计模式个人备忘(享元模式,strategy, templete strategy)



设计模式C++实现(9)——享元模式

常见设计模式的解析和实现(C++)之十六-Strategy模式

http://sourcemaking.com/design_patterns/strategy/cpp/1

http://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 << '\n';
   Stat<SortBubble>  one;
   one.readVector( array, NUM );
   cout << "min is " << one.getMin() << ", max is " << one.getMax()
        << ", median is " << one.getMedian() << '\n';

   Stat<SortShell>  two;
   two.readVector( array, NUM );
   cout << "min is " << two.getMin() << ", max is " << two.getMax()
        << ", median is " << two.getMedian() << '\n';
}

// 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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值