Blu*_*rin 2 c++ oop design-patterns
在C++中,我必须实现几种算法,它们代表了计算同一事物的不同方法.
我想过使用一个接口来表示不同的算法.
class AlgorithmInterface
{
public:
virtual double ComputeSomething(void* parameter) = 0;
}
class AlgorithmImplementation1: public AlgorithmInterface
{
public:
virtual double ComputeSomething(void* parameter) { /* implementation */}
}
class AlgorithmImplementation2: public AlgorithmInterface
{
public:
virtual double ComputeSomething(void* parameter) { /* implementation */}
}
Run Code Online (Sandbox Code Playgroud)
但是,每个参数(前一个示例中的void*)都不同,我如何一般地表示它们?
我使用了一个void*作为例子,因为我不知道如何表示这个.请告诉我应该怎么做:我应该为参数创建等效继承并转换它们吗?(这对我来说似乎很难看)
您可以在构造函数中传递参数.
另外,将虚拟成员设为私有,并使对象成为仿函数:
class AlgorithmInterface
{
public:
double operator()() {return this->ComputeSomething();}
private:
virtual double ComputeSomething() = 0;
}
class AlgorithmImplementation1: public AlgorithmInterface
{
virtual double ComputeSomething() { /* implementation */}
public:
AlgorithmImplementation1(Parameter 1);
}
class AlgorithmImplementation2: public AlgorithmInterface
{
virtual double ComputeSomething() { /* implementation */}
public:
AlgorithmImplementation2(Item a1,Item a2);
}
int main()
{
AlgorithmImplementation2 job(Item(12), Iterm(13));
double result = job(); // execute;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |