对于 OOP 实践,我正在开发一个业余爱好项目,这是一个测验程序,它从 txt 文件中读取表格并询问有关表格中条目的问题。我们的想法是让这有助于学习我们部门类(class)所提供的 Material 。
到目前为止,我编写了 I/O 位,组合了一个相当适中的 GUI 和类来表示数据表中不同类型的实体。不过,我不确定如何继续该程序的核心,我的意思是问题生成和验证。
我的第一个想法是创建一个类AbstractQuestion
,它几乎定义了问题是什么以及它具有哪些字段(字符串表示、答案和难度级别)。然后我想我可以为不同类型的问题编写类,例如一个用于简单值查询的类(例如给出实体的名称并询问特定属性),另一个类用于更复杂的问题(例如查询实体等)。
但是我不确定这是否是最好的方法。无法真正表达原因,但我有一种感觉,这不是最好的解决方法。在工厂类上工作有意义吗?本质上我需要:
- 提供根据从数据表中随机选取的一个或多个实体生成问题的方法
- 需要根据用户的输入(所需的难度级别)在运行时创建不同类型的问题
- 需要验证问题,并且需要通过主
Quiz
类通知用户(因此问题需要易于访问)。
我可以从简单开始,只实现一种类型的问题,让它发挥作用并及时添加新功能,但我认为这是提高我对 OOP 理解的好习惯,此外,我担心它是否有效并且我开始把它分发给人们测试一下,我最终会做其他的事情。我希望能够更好地构思我的项目,并且我认为这可能是改进这一点的好机会。
PS:如果不是很明显,我的教育背景不是程序员:)
最佳答案
您可以使用 Abstract Factory创建知道如何根据特定参数创建问题的工厂。
至于通知,您可以使用 Observer Pattern 。研究它们并查看您喜欢的语言的示例
关于java - OOP 设计 - 创建策略/模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301566/