比方說,我們有一個經典的多態結構:外部化渲染
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