不确定如何在c++中实现此模式
Not sure how to approach this pattern in C++
我有一系列或多或少做同样事情的类。来自Java世界,我将它们分组在一个父类下,并使用抽象工厂模式来共享公共代码,并为我的类提供单点创建。因此,所有的类都继承自DocumentParser, DocumentParser只有纯虚拟方法和静态方法,这些方法创建类的实例来完成实际的工作,比如PDFParser。
DocumentParser的每个实现只能处理一种类型的文档,如果试探失败,构造函数将抛出异常。
但是现在我想添加一种新的工厂方法,它将执行这些启发式方法,并根据需要创建正确类型的类的实例。我的问题是,如果我收到一个与任何现有解析器不匹配的文件,我该怎么办?我有我的工厂返回nullptr
吗?
你可以在c++中抛出异常,这很好!
这主要取决于您的代码的整体结构。在问社区之前,你应该问一下你自己:
当用户试图打开一个文件时,我的应用程序无法处理,我该怎么办?
根据答案,你可以做以下其中一件事:
- 如果答案是"用户足够聪明知道",那么只返回一个
nullptr
,并让代码通知用户异常,或者测试一个nullptr
并显示你自己的信息提示, - 如果答案是"这将经常发生",那么你可能想要返回一些抽象的阅读器,它将能够通过忽略内容并返回空文件来读取任何文件,
- 如果代码要变成某种库,最好抛出一个异常
无论你选择什么——不要盲目地追求设计模式。代码应该是清晰和逻辑的,而不是面向模式的。
相关文章:
- 下面抽象工厂设计模式的实现是正确的吗
- 虚拟模板函数:使用参数实现访客模式
- 在C++中使用#include宏实现mixin模式好吗
- OpenCV 混合模式实现:为什么看似等效的操作会产生不同的结果?
- 如何在Javascript中实现这种C++模式?
- 实现通用工厂设计模式
- 我如何实现变异模式以将可变数量的参数转发到C 11中的函数
- 为什么装饰器模式实现需要一个具有核心类的公共抽象超类
- 在任何编译语言中实现以下语法(用于工厂设计模式)? 最好是 Kotlin,C++
- 在C 中实现HAL的设计模式
- 奇怪的是重复出现的模板模式实现
- 如何在C 中实现公式模式
- 是已定义的流的实现的默认模式
- 实现工厂模式时虚拟功能的多重定义
- 如何在不必绑定到特定类的情况下实现观察者模式
- 错误:在 C++ 中实现接口模式时未定义对 typeinfo 的引用
- 实现单一实例模式
- 生成器模式实现中的不完整类型错误
- 这个c++实现模式的名称
- 指向实现模式的指针