假设我们有一个经典的多态架构:
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/