策略
1. 策略的目标
参照SQL Server 的策略,以领域设计的方法确定各个业务的边界,从而抽象出业务之间交互的接口,同时也对具体业务内部进行抽象,对关键的业务方法在执行前、执行后的行为提供外部植入。
2. 策略的名词
方面
代码对象、单据对象、服务对象、仓储对象都是策略的方面。
条件
由对象的属性的表达式表达
针对目标
对象的方法,有两种情况,执行前(Before)、执行后(After)。
对象的属性
动作
当方面、条件、针对目标完全匹配时,执行的动作,动作的返回值可以是值对象也可以是一个算法。
3. 策略分类
算法策略
年假、工资计算公式等等归纳为算法策略,其特点为根据方面和条件返回一个值,没有针对目标。算法策略只是描述一个业务逻辑,一般作为被调用者。
执行策略
针对目标的方法被调用之后,将会引发策略的执行,在执行中我们可以对方对象的属性进行赋值,以及函数调用等动作。
执行的策略一旦启用将会自动附加到方面上。
验证策略
验证策略是一种特殊的执行策略,只需要配置满足的表达式即可。
4. 策略的外部对象方法协作
特殊情况下,有些业务逻辑开发过程中需要引用策略方面对象以外的方法进行赋值或判断,那么可以通过约定开发接口进行函数的调用。
例如:单据号的产生需要两个步骤,一、根据单据类型获取该类型的最大号;二、根据最大号安装指定的规则生成代码。通过在策略之外写好GetCode函数,定义个针对单据的GetNew的目标编写一个执行策略,对单据Code属性应用GetCode函数即可。
5. 总结
策略中心的最大的作用是:当两个业务之间的约束关系明确化时,为业务之间的耦合提供一个桥梁。