/*
* 将算法独立于使用的客户端,避免出现大量的if else语句
*/
#include <iostream>
using namespace std;
class Algorithm{
public:
virtual void doAlgorithm() = 0;
virtual ~Algorithm(){ }
};
class Algorithm1 : public Algorithm
{
public:
void doAlgorithm(){ cout<<"Algorithm1"<<endl; }
};
class Algorithm2 : public Algorithm
{
public:
void doAlgorithm(){ cout<<"Algorithm2"<<endl; }
};
class Algorithm3 : public Algorithm
{
public:
void doAlgorithm(){ cout << "Algorithm3"<<endl; }
};
class Use
{
Use(Algorithm * algorithm) : m_algorithm = algorithm{ }
dealWithData(){ m_algorithm->doAlgorithm(); }
private:
Algorithm * m_algorithm;
};
int main()
{
cout << "Hello World!" << endl;
Algorithm * algorithm = new Algorithm3;
Use * use1 = new Use(algorithm);
use1->dealWithData();
delete use1;
delete algorithm;
use1 = nullptr;
algorithm = nullptr;
return 0;
}