打字猴:1.7004842e+09
1700484200 userList.add(new User(“国庆牛”,82));
1700484201
1700484202 userList.add(new User(“张国庆三”,10));
1700484203
1700484204 userList.add(new User(“李四”,10));
1700484205
1700484206 //定义一个用户查询类
1700484207
1700484208 IUserProvider userProvider=new UserProvider(userList);
1700484209
1700484210 //打印出名字包含”国庆”的人员
1700484211
1700484212 System.out.println(”===名字包含国庆的人员===”);
1700484213
1700484214 //定义一个规格书
1700484215
1700484216 IUserSpecification spec=new UserByAgeThan(25);
1700484217
1700484218 IUserSpecification spec2=new UserByNameLike(”%国庆%”);
1700484219
1700484220 for(User u:userProvider.findUser(spec.and(spec2))){
1700484221
1700484222 System.out.println(u);
1700484223
1700484224 }
1700484225
1700484226 }
1700484227
1700484228 }
1700484229
1700484230 在场景类中我们建立了两个规格书,一个是年龄大于25的用户,一个是名字中包含“国庆”两个字的用户,这两个规格书之间的关系是“与”关系,运行结果如下:
1700484231
1700484232 ===名字包含国庆的人员===
1700484233
1700484234 用户名:国庆牛 年龄:82
1700484235
1700484236 到此为止我们的LINQ已经完成了很大一部分了,SQL语句中的where后面部分已经可以解析了,完全可以再增加年龄相等的规格书、姓名字数规格书等等,你在SQL中使用过的条件在这里都能实现了。功臣还是依赖于三个与或非规格书,有了它们三个栋梁才能组合出一个精彩的条件查询世界。
1700484237
1700484238
1700484239
1700484240
1700484241 设计模式之禅 [:1700454090]
1700484242 设计模式之禅 37.2 最佳实践
1700484243
1700484244 我们在例子中多次提到规格两个字,该实现模式就叫做规格模式(Specification Pattern),它不属于23个设计模式,它是其中一个模式的扩展,是哪个模式呢?
1700484245
1700484246 我们用全局的观点思考一下,基类代表的是所有的规格书,它的目的是描述一个完整的、可组合的规格书,它代表的是一个整体,其下的And规格书、Or规格书、Not规格书、年龄大于基准年龄规格书等等都是一个真实的实现,也就是一个局部,现在我们又回到了整体和部分的关系了,那这是什么模式?对,组合模式,它是组合模式的一种特殊应用,我们来看它的通用类图,如图37-5所示。
1700484247
1700484248
1700484249
[ 上一页 ]  [ :1.7004842e+09 ]  [ 下一页 ]