比方说,我们有一个经典的多态结构:外部化渲染
class Animal
{
virtual void eat() = 0;
};
class Frog : public Animal
{
virtual void eat() { ... }
};
class Chipmunk : public Animal
{
virtual void eat() { ... }
};
这是好的。但是在渲染时,我可以像eat
方法一样将虚拟render
方法添加到Animal
基类。
但是,然后动物源文件依赖于正在使用的特定库。这不会使事情变得可调整和可维护。另外,他们的渲染代码基本上不涉及它们。
什么是将呈现特定代码从派生类中移出的好方法?
当我说的很好时,我的意思是不使用类似重载的方法,为每个派生类返回一个不同的数字,所以我可以做一个大的if ... else if ...。
+1这正是访客模式要解决的问题。 – 2011-03-03 01:23:04