1)它们是否应该在模块中通过任何一套方法实现? 2)他们是否应该在一个特殊的类中实现,每个方法都测试一个特定的业务规则?业务规则应该在哪里实施?
另外...你能推荐我关于这个问题的任何好的参考书目吗?
UPDATE:
“业务规则是一个企业,公司或企业的规则,这是定义或约束业务的某些方面始终解析为真或假的规则。” Wikipedia definition.
1)它们是否应该在模块中通过任何一套方法实现? 2)他们是否应该在一个特殊的类中实现,每个方法都测试一个特定的业务规则?业务规则应该在哪里实施?
另外...你能推荐我关于这个问题的任何好的参考书目吗?
UPDATE:
“业务规则是一个企业,公司或企业的规则,这是定义或约束业务的某些方面始终解析为真或假的规则。” Wikipedia definition.
首先,您必须对“业务规则”有什么清晰的定义。有一批候选人:
你到底是什么意思?这是一个模糊的问题,如果你愿意,它可能会很大。
他们去哪里在你的代码有很多的选择,因为到。
你是否看到你开放的问题?你的问题意味着你有一个明确的问题,并期待一个简单,整洁的答案。事实是,这是一个广泛的话题。
这是一个相当普通的问题,很难回答 - 但我要说看看Behaviour Driven Development作为开发的心脏保持业务规则的一种方式。
我建议你研究MVC范式 - 模型视图控制器。视图中不应该有商业逻辑,它应该都在模型中。
关注焦点回答。我没有谈论视图层。我只询问任何必须验证业务规则的业务组件...... – JPCF 2010-12-14 23:41:09
我不确定它是否“不专心” - 该范例描述了一个设计,其中任何“业务组件”都将是一个独立模型,因此很容易测试。 – Arafangion 2010-12-15 00:16:18
在我看来,过分简单化。不是玩具的系统很少适合所有的逻辑,如此整齐地放在少数物体中。 – duffymo 2010-12-15 15:26:14
问题的答案取决于多种因素,如
如果答案为是所有这些正上方,然后规则引擎(Drools的,ILOG等)是你在找什么来实现你的规则
如果你的答案为否,则另一种方法是,以模型中的代码记住下面保持
E.g.复制自here
EligibleForDiscountSpecification isEligibleForDiscountRule = new EligibleForDiscountSpecification();
isEligibleForDiscountRule .IsSatisfiedBy(customer)
你认为什么时候应该使用规范模式?什么时候不用它? – JPCF 2010-12-15 15:17:34
业务规则最佳做法声明规则应该是可插入组件。最简单的方法是将其编码到专用库中,然后继续使用依赖注入或反射...也许您应该对Contracts Driven Development进行调查,然后查看www.businessrulesgroup.org/brmanifesto.htm开始。
其实你向我展示了知道不同可能性的重要一步......这部分是我期待的! – JPCF 2010-12-15 14:52:00
我现在使用维基百科陈述的定义...也许你可以相应地更新你的答案。 – JPCF 2013-10-24 16:38:35
“商业规则是商业,公司或公司的规则” - 无非就是一种重言式。看看维基百科的含义。 – duffymo 2013-10-24 18:35:49