java - OOP 设计 - 创建策略/模式

标签 java oop design-patterns

对于 OOP 实践,我正在开发一个业余爱好项目,这是一个测验程序,它从 txt 文件中读取表格并询问有关表格中条目的问题。我们的想法是让这有助于学习我们部门类(class)所提供的 Material 。

到目前为止,我编写了 I/O 位,组合了一个相当适中的 GUI 和类来表示数据表中不同类型的实体。不过,我不确定如何继续该程序的核心,我的意思是问题生成和验证。

我的第一个想法是创建一个类AbstractQuestion,它几乎定义了问题是什么以及它具有哪些字段(字符串表示、答案和难度级别)。然后我想我可以为不同类型的问题编写类,例如一个用于简单值查询的类(例如给出实体的名称并询问特定属性),另一个类用于更复杂的问题(例如查询实体等)。

但是我不确定这是否是最好的方法。无法真正表达原因,但我有一种感觉,这不是最好的解决方法。在工厂类上工作有意义吗?本质上我需要:

  • 提供根据从数据表中随机选取的一个或多个实体生成问题的方法
  • 需要根据用户的输入(所需的难度级别)在运行时创建不同类型的问题
  • 需要验证问题,并且需要通过主 Quiz 类通知用户(因此问题需要易于访问)。

我可以从简单开始,只实现一种类型的问题,让它发挥作用并及时添加新功能,但我认为这是提高我对 OOP 理解的好习惯,此外,我担心它是否有效并且我开始把它分发给人们测试一下,我最终会做其他的事情。我希望能够更好地构思我的项目,并且我认为这可能是改进这一点的好机会。

PS:如果不是很明显,我的教育背景不是程序员:)

最佳答案

您可以使用 Abstract Factory创建知道如何根据特定参数创建问题的工厂。
至于通知,您可以使用 Observer Pattern 。研究它们并查看您喜欢的语言的示例

关于java - OOP 设计 - 创建策略/模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301566/

相关文章:

c# - Windows 应用程序 : Best Practices & Patterns (C#/WPF/LINQ)

java - 使用 unboundid 更改 LDAP 中的用户密码

Java:println 中的 boolean 值( boolean 值? "print true":"print false")

c# - 将属性从基类向下移动到子类

java - 如果子类在重写方法中强化了先决条件,那么在程序中会发生什么情况?

java - 像这样使用装饰器模式是不是错了?

java - 机器人的平滑路径

java - 如何从 pagedList 中删除项目

c# - 避免许多继承类

c# - 设计模式 C# 存储库