将继承更改为组合

changing inheritance to composition

本文关键字:组合 继承      更新时间:2023-10-16
class MyTransport : public ITransport
{
void setSource(ITransport* src) { m_source = src; }
/* implement ITransport using m_source */
private:
  ITransport* m_source;
};

我需要加载(在运行时)一些ITransport并自定义其输出。同时,我需要向我的客户提供ITransport。(以前是通过简单地继承某些SourceTransport来实现的,但现在转向插件)

这是正确的方法吗?

这种插入行为的方法似乎很好,但我会摆脱setSource,而是在构造函数中传递目标源。

我找到了装饰器模式,它似乎准确地表达了这种情况。