代码之家  ›  专栏  ›  技术社区  ›  AceJordin

处理许多参数和业务规则的设计模式

  •  3
  • AceJordin  · 技术社区  · 14 年前

    这个类,就像它现在存在的那样,变得复杂和笨拙,因为业务规则规定它需要访问系统中的许多数据库,以决定是否可以创建作业和/或如何设置作业。

    为了使事情更加复杂,需要提交一个作业列表,并且需要以多种方式调用它(作为引用的程序集,通过windows服务,或通过web服务)。

    以下是它所做事情的一些例子:

    • 生成作业成本估算
    • 接受分配作业的帐户和/或用户
    • 发出作业提交进度跟踪事件
    • 从外部用户定义的列表(.csv、.xls等)合并数据

    我的问题是:什么样的最佳实践或设计模式可以使这个过程尽可能的易于管理和简单?

    4 回复  |  直到 14 年前
        1
  •  3
  •   Steve Ellinger    14 年前

    似乎该类需要重构,因为它似乎违反了 Single Responsibility Principle facade pattern ,其中主类表示系统正在执行的操作的高级抽象。

        2
  •  1
  •   jsmith    14 年前

    这种类型的程序如果不从一开始就保持干净,可能会变得非常混乱。我自己总是尽量坚持基本的3层应用程序(表示、业务、数据)。以这种方式构建应用程序有很多有用的信息,最好这样做 some demo projects MSDN reference .

    我最好的建议是花时间 很多。使用图表、流程图等。。当一个程序如此复杂时,我喜欢在开始编写代码之前就为我的层打好基础。

        3
  •  0
  •   Reinderien    14 年前

    根据您对需求的描述,没有真正“简单”的方法来实现这一点。它所必需的功能是庞大和多样的。我唯一的建议是将整个东西放入一个DLL库(甚至是一组DLL),分离不同的前端,这样引用程序集就不需要依赖Windows服务(例如);并且坚持基本的OOP命令,比如松耦合。

        4
  •  0
  •   eglasius    14 年前

    通过对规则进行建模,您可以切换到更可配置/更灵活的方法。可以组合多个规则以公开影响作业和相关任务结果的不同操作。

    这允许您拥有由其他规则组成的规则。根据您所处的场景,这可以极大地简化您处理它的方式,因为一些涉及跨所有这些系统的隐式规则的操作可以表示为简单规则的组合。我会尽量简单,但是当你扩展它的时候,你可能会发现需要不同的方法来组合规则,并且模式会自己出现。

    至于固体,我建议检查一下 the ebook here 并尝试保持不断发展的代码方法。