打字猴:1.70048442e+09
1700484420
1700484421 public boolean isSatisfiedBy(Object candidate){
1700484422
1700484423 //根据基准对象和候选对象,进行业务判断,返回boolean
1700484424
1700484425 return false;
1700484426
1700484427 }
1700484428
1700484429 }
1700484430
1700484431 然后就是看怎么使用了,场景类如代码清单37-28所示。
1700484432
1700484433 代码清单37-28 场景类
1700484434
1700484435 public class Client{
1700484436
1700484437 public static void main(String[]args){
1700484438
1700484439 //待分析的对象
1700484440
1700484441 ArrayList<Object>list=new ArrayList<Object>();
1700484442
1700484443 //定义两个业务规格书
1700484444
1700484445 ISpecification spec1=new BizSpecification(new Object());
1700484446
1700484447 ISpecification spec2=new BizSpecification(new Object());
1700484448
1700484449 //规则的调用
1700484450
1700484451 for(Object obj:list){
1700484452
1700484453 if(spec1.and(spec2).isSatisfiedBy(obj)){//and操作
1700484454
1700484455 System.out.println(obj);
1700484456
1700484457 }
1700484458
1700484459 }
1700484460
1700484461 }
1700484462
1700484463 }
1700484464
1700484465 规格模式已经是一个非常具体的应用框架了(相对于23个设计模式),大家遇到类似多个对象中筛选查找,或者业务规则不适于放在任何已有实体或值对象中,而且规则的变化和组合会掩盖那些领域对象的基本含义,或者是想自己编写一个类似LINQ的语言工具的时候就可以照搬这部分代码,只要实现自己的逻辑规格书即可。
1700484466
1700484467
1700484468
1700484469
[ 上一页 ]  [ :1.70048442e+09 ]  [ 下一页 ]