```
#include <iostream>
using namespace std;
class Sort {
public:
virtual void sort() const = 0;
};
class MergeSort: public Sort {
public:
void sort() const {
cout << "MergeSort()\n";
}
};
class QuickSort: public Sort {
public:
void sort() const {
cout << "QuickSort()\n";
}
};
class Context
{
Sort* m_sort;
public:
void setSort(Sort* s){
m_sort = s;
}
void sort() const {
m_sort->sort();
}
};
int main(int argc, char *argv[])
{
MergeSort mergeSort;
QuickSort quickSort;
Context context;
context.setSort(&mergeSort);
context.sort();
return 0;
}
```