假设我正在编写一个适用于项目的应用程序,并根据项目类型公开不同的功能。我有不同类型项目的类层次结构:
class AbstractProject
{
};
class ProjectA : public AbstractProject
{
};
class ProjectB : public AbstractProject
{
};
class ProjectC : public AbstractProject
{
};
现在,我计划将一个AbstractProject * _currentProject指针作为应用程序主类中的成员,在启动时弹出一个对话框并根据选择执行:
_currentProject = new ProjectB(); // e.g.
稍后,我将不得不向下转换指向特定类型的指针,以利用特定于不同Project的功能。不知怎的,这让我感到不安。有没有更好的方法呢?
答案 0 :(得分:2)
是的,您应尽可能使用虚拟方法。
答案 1 :(得分:2)
更好的方法是在基类中定义纯虚方法,然后在派生类的重载中实现所有特定功能。然后调用该方法。
答案 2 :(得分:1)
命令和访客模式可能都适用于此处。你应该自己决定哪种更适合你的情况。
答案 3 :(得分:0)
在纯粹的OO中,您应该拥有像所有人建议的虚拟方法。但是,如果您仍然需要寻找特定的成员函数,请尝试使用其中一种设计模式,可能是命令或访问者甚至是装饰者...