c++ - 关于可能的设计模式的问题

标签 c++ design-patterns

我脑子里有这样的设计....我的目标是在包含某些功能和不包含某些功能的情况下重用该程序。 文学上叫什么? 更多信息:有事件.. 事件导致调用 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/

相关文章:

c++ - 添加传递给它的两个变量的递归函数

c++ - 在 std::map 中查找结构作为值

java swing 与 mvc : is this pattern indeed possible?

c++ - 为什么容器需要const

C++友元转换函数

带有类错误消息的 C++ 温度计

c# - 使业务层的方法安全。最佳实践/最佳模式

java - 如何抽象转换类型

Java 嵌套 for while 循环

c# - 设计一个灵活高效的问答系统