我有一系列的类或多或少地做同样的事情。来自Java世界,我将它们分组在一个父类下,并使用Abstract Factory模式来共享通用代码并为我的类提供一个创建点。因此,所有类都从DocumentParser继承,DocumentParser仅具有纯虚拟方法和静态方法,这些方法创建可完成实际工作的类的实例,例如PDFParser。

DocumentParser的每个实现只能在一种类型的文档上运行,并且如果启发式方法失败,则构造函数将引发异常。

但是现在我想添加一种新的工厂方法,该方法将执行这些启发式操作,并根据需要创建正确类型的类的实例。我的问题是,如果收到与现有解析器不匹配的文件,该怎么办?我有工厂退回的nullptr吗?

最佳答案

您可以在C++中引发异常,这很好!

关于c++ - 不确定如何在C++中处理这种模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23871001/

10-10 21:23