用于存储客户特定要求的设计模式

时间:2016-10-27 16:25:51

标签: c# sql wcf design-patterns sql-server-2012

tldr;寻找一种擅长处理客户对数据库字段的各种要求的设计模式。

一直在寻找并且没有遇到过类似问题的人,但如果我错过了一个,请告诉我!此外,我怀疑我可能要么过于复杂化问题,要么试图一次做太多。对不起来的文字墙。

好的,所以我正在为一家我过去合作过的公司设计一个新的C#应用​​程序。我正在编写这个应用程序来替换他们现在拥有的VB6应用程序。这个新应用程序的范围将用于初始信息收集阶段。

该公司是为路边援助;卡车为拥有大型钻井平台卡车的公司而破产。他们为数百名客户提供帮助,每个客户都有自己的要求。公司为每个客户弯腰倒退,因此我需要提出一个可管理的设计来处理这些客户的规格。以前开发的所有应用程序都具有内联功能,如果没有其他应用程序。几百个客户的逻辑,我仍然有噩梦。

示例:

用户将接听客户的电话并收集他们输入此应用程序的信息。他们将要求举报轮胎爆胎等事件。有时候打电话的人是司机。其他时候司机打电话给他们工作的公司,一位代表打电话报告事件并请求帮助。让我们关注一些信息,以便我可以画出图片。

  1. 客户参考编号
  2. 里程表
  3. 列表项
  4. 并非每个客户都需要参考编号。有些客户要求参考编号遵守某个掩码,例如"参考编号必须以BD-XXX-XXXX-XX"或类似的东西。其他客户甚至没有参考编号,因此没有必要捕获这些数据(它不存在)。

    有些客户要求里程表读取里程数,有些则不需要。

    所以你可能会开始看到我的问题。客户A不需要参考编号。客户B需要参考编号。它不像NOT NULL vs NULL那么简单,因为B也需要它们的引用号来匹配输入掩码。

    要求类型:

    • 字段值必须大于/小于X
    • 字段必须遵循输入掩码
    • 字段未收集
    • 必填字段
    • 字段可选
    • 字段值决定是否必须是其他信息 集。如果一个特定字段为空,则需要另一个字段

    我想将客户需求存储在数据库(SQL)中,并且可能能够加载具有此数据的类,该数据将能够处理应用程序的UI部分的需求。

    项目的组成部分必须是: C#Windows应用程序 WCF数据服务(将在多个应用程序和Web之间使用) SQL Server 2012

1 个答案:

答案 0 :(得分:1)

首先,我认为这些不同的客户应该由相应的class代表。如果客户参考不是公共财产,但它与某种类型的客户相关联,那么您需要使用继承

在您的方案中可以使用的可能良好的设计模式是Specification pattern,如下所示:

public interface ISpecification<T>
{
      bool IsSatisfiedBy(T someObject);
}

我猜您将使用依赖注入反转控制容器框架,并且您将能够配置许多实现ISpecification<T>。一旦您配置了它们,您就应该能够按T过滤它们,其中T将是您的客户类。

也就是说,您可以加载ISpecification<T>个实现的子集,以检查某个客户实例是否满足一个或多个用于检查特定客户类型。