c++ - 多态对象的外部化渲染

标签 c++

假设我们有一个经典的多态架构:

class Animal
{
    virtual void eat() = 0;
};

class Frog : public Animal
{
    virtual void eat() { ... }
};

class Chipmunk : public Animal
{
    virtual void eat() { ... }
};

这很好。但是在渲染方面,我可以向 Animal 基类添加一个虚拟的 render 方法,就像 eat 方法一样。

但是动物源文件依赖于正在使用的特定库。这不会使事情变得可模块化和可维护。另外,他们的渲染代码基本上与他们无关。

将渲染特定代码放在派生类之外的好方法是什么?

当我说 nice 时,我的意思是不使用重载方法之类的东西,它为每个派生类返回不同的数字,所以我可以做一个很大的 if...else if ...

最佳答案

看看 Visitor Pattern - 向虚拟 render() 函数传递一个 Visitor 实例,然后调用 Visitor.renderMe(this)。 Visitor 然后根据需要重载 renderMe 并包含渲染特定代码。

关于c++ - 多态对象的外部化渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173618/

相关文章:

c++ - 无法将 ncurses 表单与窗口相关联

c++ - 声明 vector 的 protected 指针的问题

c++ - 如何初始化 std::map 项的 std::vector?

c++ - 使用 PlaySound() API 同时播放多个文件

c# - 自动滚动控件(WinAPI)?

C++ 内联程序集运行时检查失败 #0

c++ - Mac 终端编译错误

c++ - cuSparse (cusparseDcsrgemm) 中的矩阵乘法输出错误的结果

c++ - 类的构造函数的声明和定义并打印私有(private)和公共(public)变量?

c++ - 查找指向对象的静态指针?