DesignPattern/22.StrategyPattern/2.Code/Context.h

61 lines
980 B
C
Raw Normal View History

2019-11-09 13:25:30 +00:00
#ifndef __CONTEXT_H__
#define __CONTEXT_H__
#include "Strategy.h"
#include <stdio.h>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class Context
{
public:
Context(){
arr = nullptr;
2019-11-09 13:25:30 +00:00
N = 0;
sortStrategy = nullptr;
2019-11-09 13:25:30 +00:00
}
Context(int iArr[], int iN){
this->arr = iArr;
this->N = iN;
sortStrategy = nullptr;
}
Context(const Context& context) = delete;
Context& operator=(const Context&) = delete;
~Context()
{
if(sortStrategy)
{
delete sortStrategy;
sortStrategy = nullptr;
}
2019-11-09 13:25:30 +00:00
}
void setSortStrategy(Strategy* iSortStrategy){
if(sortStrategy)
{
delete sortStrategy;
sortStrategy = nullptr;
}
2019-11-09 13:25:30 +00:00
this->sortStrategy = iSortStrategy;
}
void sort(){
this->sortStrategy->sort(arr, N);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ");
this->print();
}
void setInput(int iArr[], int iN){
this->arr = iArr;
this->N = iN;
}
void print(){
for (int i = 0; i < N; i++){
printf("%3d ", arr[i]);
}
printf("\n");
}
private:
Strategy* sortStrategy;
int* arr;
int N;
};
#endif // __CONTEXT_H__