1700483670
图37-2 加入规格后的设计类图
1700483671
1700483672
在该类图中建立了一个规格书接口,它的作用就是定制各种各样的规格,比如名字相等的规格UserByNameEqual、年龄大于基准年龄的规格UserByAgeThan等等,然后在用户操作类中采用该规格进行判断。User类没有任何改变,如代码清单37-1所示,不再赘述。
1700483673
1700483674
规格书接口是对全体规格书的声明定义,如代码清单37-6所示。
1700483675
1700483676
代码清单37-6 规格书接口
1700483677
1700483678
public interface IUserSpecification{
1700483679
1700483680
//候选者是否满足要求
1700483681
1700483682
public boolean isSatisfiedBy(User user);
1700483683
1700483684
}
1700483685
1700483686
规格书接口只定义一个方法,判断候选用户是否满足条件。再来看姓名相同的规格书,它实现了规格书接口,如代码清单37-7所示。
1700483687
1700483688
代码清单37-7 姓名相同的规格书
1700483689
1700483690
public class UserByNameEqual implements IUserSpecification{
1700483691
1700483692
//基准姓名
1700483693
1700483694
private String name;
1700483695
1700483696
//构造函数传递基准姓名
1700483697
1700483698
public UserByNameEqual(String_name){
1700483699
1700483700
this.name=_name;
1700483701
1700483702
}
1700483703
1700483704
//检验用户是否满足条件
1700483705
1700483706
public boolean isSatisfiedBy(User user){
1700483707
1700483708
return user.getName().equals(name);
1700483709
1700483710
}
1700483711
1700483712
}
1700483713
1700483714
代码很简单,通过构造函数传递进来基准用户名,然后判断候选用户是否匹配。大于基准年龄的规格书与此类似,如代码清单37-8所示。
1700483715
1700483716
代码清单37-8 大于基准年龄的规格书
1700483717
1700483718
public class UserByAgeThan implements IUserSpecification{
1700483719
[
上一页 ]
[ :1.70048367e+09 ]
[
下一页 ]