打字猴:1.700484106e+09
1700484106 private IUserSpecification right;
1700484107
1700484108 public OrSpecification(IUserSpecification_left,IUserSpecification_right){
1700484109
1700484110 this.left=_left;
1700484111
1700484112 this.right=_right;
1700484113
1700484114 }
1700484115
1700484116 //or运算
1700484117
1700484118 @Override
1700484119
1700484120 public boolean isSatisfiedBy(User user){
1700484121
1700484122 return left.isSatisfiedBy(user)||right.isSatisfiedBy(user);
1700484123
1700484124 }
1700484125
1700484126 }
1700484127
1700484128 代码清单37-19 非规格书
1700484129
1700484130 public class NotSpecification extends CompositeSpecification{
1700484131
1700484132 //传递一个规格书
1700484133
1700484134 private IUserSpecification spec;
1700484135
1700484136 public NotSpecification(IUserSpecification_spec){
1700484137
1700484138 this.spec=_spec;
1700484139
1700484140 }
1700484141
1700484142 //not操作
1700484143
1700484144 @Override
1700484145
1700484146 public boolean isSatisfiedBy(User user){
1700484147
1700484148 return!spec.isSatisfiedBy(user);
1700484149
1700484150 }
1700484151
1700484152 }
1700484153
1700484154 这三个规格书都是不发生变化的,只要使用该框架,三个规格书都要实现的,而且代码基本上是雷同的,所以才有了父类依赖子类的设计,否则是严禁出现父类依赖子类的情况的。大家再仔细看看这三个规格书和组合规格书,代码很简单,但也很巧妙,它跳出了我们面向对象设计的思维,不变部分使用一种固化方式实现。
1700484155
[ 上一页 ]  [ :1.700484106e+09 ]  [ 下一页 ]