策略模式(STRATEGY)案例分析

案例分析:

有许多经典的排序算法,分别适合不同的数据结构,利用策略模式在排序对象中封装了不同的排序算法,这样以便允许客户端动态的替换排序策略(包括Quicksort、Shellsort和Mergesort)。

 

意图:

策略模式属于对象行为型模式,主要针对一组算法,将每个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换。

 

结构图:

 

 

策略模式(STRATEGY)案例分析_第1张图片

 

程序代码:

#include <iostream.h>

 

class SortFun

{

public:

     virtual void sort()=0;

};

class QuickSort:public SortFun

{

public:

     void sort()

     {

         cout<<"QuickSort!"<<endl;

     }

};

class ShellSort:public SortFun

{

public:

     void sort()

     {

         cout<<"ShellSort!"<<endl;

     }

};

class MergeSort:public SortFun

{

public:

     void sort()

     {

         cout<<"MergeSort!"<<endl;

     }

};

class SortObject

{

protected:

     SortFun* psort;

public:

     SortObject(SortFun* st)

     {

         psort=st;

     }

     void sort()

     {

        psort->sort();

    }

};

int main()

{

     SortObject *pobj=new SortObject(new QuickSort);

     pobj->sort();

     pobj=new SortObject(new ShellSort);

     pobj->sort();

     pobj=new SortObject(new MergeSort);

     pobj->sort();

     return 1;

}

运行结果:

QuickSort!

ShellSort!

MergeSort!

Press any key to continue

你可能感兴趣的:(数据结构,算法,Class)