打字猴:1.700483779e+09
1700483779
1700483780 if(userSpec.isSatisfiedBy(u)){//符合指定规格
1700483781
1700483782 result.add(u);
1700483783
1700483784 }
1700483785
1700483786 }
1700483787
1700483788 return result;
1700483789
1700483790 }
1700483791
1700483792 }
1700483793
1700483794 程序改动很小,仅仅在if判断语句中根据规格书进行判断,我们持续地扩展规格书,有多少查询分类就可以扩展出多少个实现类,而IUserProvider则不需要任何改动,它的一个方法就覆盖了我们刚刚提出的N多查询路径。我们设计一个场景来看看效果如何,如代码清单37-11所示。
1700483795
1700483796 代码清单37-11 场景类
1700483797
1700483798 public class Client{
1700483799
1700483800 public static void main(String[]args){
1700483801
1700483802 //首先初始化一批用户
1700483803
1700483804 ArrayList<User>userList=new ArrayList<User>();
1700483805
1700483806 userList.add(new User(“苏大”,3));
1700483807
1700483808 userList.add(new User(“牛二”,8));
1700483809
1700483810 userList.add(new User(“张三”,10));
1700483811
1700483812 userList.add(new User(“李四”,15));
1700483813
1700483814 userList.add(new User(“王五”,18));
1700483815
1700483816 userList.add(new User(“赵六”,20));
1700483817
1700483818 userList.add(new User(“马七”,25));
1700483819
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);
[ 上一页 ]  [ :1.700483779e+09 ]  [ 下一页 ]