C# 问答式审计软件的设计模式

C# 问答式审计软件的设计模式,c#,.net,design-patterns,C#,.net,Design Patterns,我想建立一些调查/审计软件。 我正在头脑风暴如何构建我的类,以及是否有一种设计模式可以支持我。因为一定有什么东西让生活更美好 我的申请应该有包含标题和说明的问题。 然后我有多种类型的答案 所以。。。一种类型可以是“是/否”答案 另一种类型可以是介于1和10之间的值。 另一种类型可以自由文本回答 另一种类型可以是三个给定的文本选项,您可以在其中选择一个(晚餐很好,很好,点头不好) 因此,在调查计划网站上,我会写下我的问题并指定答案类型 在进行这项调查时,我想把它当作一系列问题的答案来处理 基本上,

我想建立一些调查/审计软件。 我正在头脑风暴如何构建我的类,以及是否有一种设计模式可以支持我。因为一定有什么东西让生活更美好

我的申请应该有包含标题和说明的问题。 然后我有多种类型的答案

所以。。。一种类型可以是“是/否”答案 另一种类型可以是介于1和10之间的值。 另一种类型可以自由文本回答 另一种类型可以是三个给定的文本选项,您可以在其中选择一个(晚餐很好,很好,点头不好)

因此,在调查计划网站上,我会写下我的问题并指定答案类型

在进行这项调查时,我想把它当作一系列问题的答案来处理

基本上,问题是如何统一所有不同的答案类型,以及如何将它们存储在数据库中

我看了综合和战略模式,但我不确定。。。 我知道没有完美的解决方案,这取决于

但如果有人能分享他们如何处理类似话题的最佳实践,那就太好了


提前感谢…

您似乎想问的是,数据库中有哪些不同的实体映射策略可供您使用?简而言之,您可以拥有:

  • 每个实体一个表
  • 一个用于所有实体的单一表,具有一个鉴别器值来标识每个实体(例如,值可能只是一个标记化字符串)——本质上是一个大映射
  • 每个实体的表,可选属性的联接比例为1:1
  • 然后,您的ORM解决方案从数据库读回数据,并将其转换为适当类型的对象(实体),在执行过程中填充字段

    对于中间层,您将需要以下类:

    抽象问题

    问题的抽象基类。包含标题、描述和抽象ask()和answer()方法。AbstractQuestion将有各种各样的子类,它们根据问题的类型提供不同的显示消息。例如,MultiChoiceQuestion将以这样一种方式实现ask()方法,即显示标题和描述(您可以将其拉到AbstractQuestion ask()方法中)以及所有可用选项(特定于每个子类)。这可以概括为ask()将映射作为参数,可以用任何您喜欢的内容填充该参数。或者你可以用varargs-随便什么

    回答

    只是一个简单的类,它包含一个映射,其中已知的键表示答案的不同方面,并引用所属的抽象问题

    问卷调查

    排列在列表中的抽象问题的集合。对于每个AbstractQuestion调用ask()方法,等待用户输入,然后使用提供的数据调用answer()方法


    不需要复杂的设计模式,除非将抽象基类计算为模式。以上内容不完整,但应该足以让您开始。

    谢谢您的回复。。。我研究了TPT和TPH,我认为这将是数据存储的决定。但我更想在中间的一层…在ORM之外…@serverinfo经过编辑以更好地针对问题