1700483820
userList.add(new User(“杨八”,30));
1700483821
1700483822
userList.add(new User(“侯九”,35));
1700483823
1700483824
userList.add(new User(“布十”,40));
1700483825
1700483826
//定义一个用户查询类
1700483827
1700483828
IUserProvider userProvider=new UserProvider(userList);
1700483829
1700483830
//打印出年龄大于20岁的用户
1700483831
1700483832
System.out.println(”===年龄大于20岁的用户===”);
1700483833
1700483834
//定义一个规格书
1700483835
1700483836
IUserSpecification userSpec=new UserByAgeThan(20);
1700483837
1700483838
for(User u:userProvider.findUser(userSpec)){
1700483839
1700483840
System.out.println(u);
1700483841
1700483842
}
1700483843
1700483844
}
1700483845
1700483846
}
1700483847
1700483848
在场景类中定义了一个规格书,然后把规格书提交给UserProvider就可以查找到自己需要的用户了,运行结果相同,不再赘述。
1700483849
1700483850
大家想想看,如果现在需求变更了,比如需要一个年龄小于基准年龄的用户,该怎么修改?增加一个小于基准年龄的规格书,实现IUserSpecification接口,然后在新的业务中调用即可,别的什么都不需要修改。再比如需要一个类似SQL中like语句的处理逻辑,这个也不难如代码清单37-12所示。
1700483851
1700483852
代码清单37-12 Like规格书
1700483853
1700483854
public class UserByNameLike implements IUserSpecification{
1700483855
1700483856
//like的标记
1700483857
1700483858
private final static String LIKE_FLAG=”%”;
1700483859
1700483860
//基准的like字符串
1700483861
1700483862
private String likeStr;
1700483863
1700483864
//构造函数传递基准姓名
1700483865
1700483866
public UserByNameLike(String_likeStr){
1700483867
1700483868
this.likeStr=_likeStr;
1700483869
[
上一页 ]
[ :1.70048382e+09 ]
[
下一页 ]