我脑子里有这样的设计....我的目标是在包含某些功能和不包含某些功能的情况下重用该程序。 文学上叫什么? 更多信息:有事件.. 事件导致调用 function1() 或 function2()...
特征具有在事件发生时调用的函数。 特性可能会影响事件中调用的函数。 一项功能可能会影响针对多个事件执行的操作。
所以看起来可能是观察者模式+hasa关系...
class feature1
{
void feature1functionx();
void feature1functiony();
}
class feature2
{
void feature2functionw();
void feature2functionz();
}
class program: feature1, feature2
{
vector<string> data;
void function1()
{
feature2functionw();
}
void function2()
{
feature1functiony();
feature2functionz();
}
void execute()
{
function1();
function2();
}
}
最佳答案
继承为 IS-A
关系建模。
如果您希望重用函数,使用 HAS-A
关系似乎很自然:这就是组合。
class program
{
public:
void function1()
{
m2.feature2functionw();
}
void function2()
{
m1.feature1functiony();
m2.feature2functionz();
}
void execute()
{
this->function1();
this->function2();
}
private:
feature1 m1;
feature2 m2;
};
我知道私有(private)继承有时被认为是一种捷径,但它在这里没有带来任何好处,所以更喜欢组合,因为它不会太束缚你。
编辑:添加了方法的定义,因为它显然不是那么清楚。
关于c++ - 关于可能的设计模式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004467/