将继承更改为组合
changing inheritance to composition
class MyTransport : public ITransport
{
void setSource(ITransport* src) { m_source = src; }
/* implement ITransport using m_source */
private:
ITransport* m_source;
};
我需要加载(在运行时)一些ITransport
并自定义其输出。同时,我需要向我的客户提供ITransport
。(以前是通过简单地继承某些SourceTransport
来实现的,但现在转向插件)
这是正确的方法吗?
这种插入行为的方法似乎很好,但我会摆脱setSource
,而是在构造函数中传递目标源。
我找到了装饰器模式,它似乎准确地表达了这种情况。
相关文章:
- 混合组合和继承的C++问题
- C++基于策略的设计:继承与组合
- 工厂方法模式使用继承而抽象工厂模式使用组合如何
- vector_base继承与组合
- 如何在 c++ 中将多重继承与组合一起使用?
- 是否可以使用 Gtk::D rawingArea (GTKmm) 作为组合而不是继承?
- C++:树根应该使用继承而不是组合吗?
- 必要时违反组合而不是继承可以吗?
- 避免使用组合进行额外的堆分配(过度继承)
- 为什么我在使用组合而不是继承时得到 C4624(无法访问基类析构函数)
- 编译器如何在继承C++中进行组合
- 类继承/组合设计
- Qt和C++:双重继承与组合
- 使用组合而不是继承的方法转发(使用C++特性)
- 将继承更改为组合
- C++中组合关系的继承
- 为什么与组合相比,私有继承会增加有人破坏我的代码的概率
- C++ 继承和组合一起使用
- 可变模板和多重继承的组合
- 两个接口,多个继承组合成一个容器