‫回到本课, 我们将创建自己的委托来筛选人员列表,
‫这将给予我们更深入地了解委托在幕后是如何工作的｡
‫让我们考虑一下下面这个类｡
‫这是一个非常简单的类, 有名字属性和年龄属性.
‫这里只有两处房产｡
‫所以我们想创建自己的代理来根据年龄过滤人们｡
‫我们的过滤器委托将一个人作为参数, 如果满足年龄条件, 我们将返回一个布尔值｡
‫到底是什么条件？
‫好吧, 我们不关心, 因为代码可以用来过滤网页上的列表, 例如,
‫过滤功能可能会很快改变｡
‫这就是代表的魅力所在
‫多么奢侈啊｡
‫好吧, 我会的
‫因此, 让我们定义委托类型｡
‫因此, 我将继续说, 这将是一个布尔类型的委托｡
‫我将把它称为过滤器委托｡
‫而且这需要一个人｡
‫所以一个人对象叫做P｡
‫现在我们来创建一个人的小列表, 可以说是人对象的列表｡
‫这里我们有四个人物对象｡
‫P一, p二, p三, P四.
‫然后我们把它们加到一个列表上｡
‫所以他们在这里有不同的名字和不同的年龄｡
‫所以现在我们要根据年龄来筛选这些人｡
‫例如, 仅显示18岁及以上的成年人或18岁以下的未成年人｡
‫由于我们希望应用不同的过滤器, 因此我们实际上创建一个名为display people的方法｡
‫这个方法会将人员清单和筛选条件当做委派, 然后根据筛选条件筛选人员清单｡
‫因此, 我们还希望添加一个名为title的字符串, 以使控制台中的内容看起来更有条理｡
‫首先, 我在这里设置方法的头文件｡
‫这里我们有显示人员的方法｡
‫它将需要一个字符串､ 人员列表和过滤器委托, 我将称之为filter｡
‫现在, 我想在这里做什么？
‫首先, 我来写标题.
‫然后我将回顾一下我个人列表中的所有人｡
‫我要检查一下过滤器对我们通过的人是否有效｡
‫所以这里我们只需要说出这个人的名字和年龄｡
‫现在, 我们可以继续定义几个用作过滤器的方法｡
‫所以一个是给矿工的｡
‫这是矿工｡
‫所以我们把这个人带进来, 对照18岁来检查他们的年龄｡
‫如果它更低, 那么我们知道我们需要返回｡
‫是的, 这说明这个人是个矿工｡
‫否则将返回false｡
‫这就是一个过滤器｡
‫那么让我们为成年人创建另一个过滤器｡
‫现在是另一个针对老年人的过滤器, 比如说65岁以上的人｡
‫喜欢｡
‫现在我们来看看main方法, 我们调用几次display people方法, 就是我们刚才创建的这个方法.
‫所以让我们来看看我们的主方法｡
‫在这里我将展示人物, 在这里我将传递标题.
‫比如说孩子们, 我传递的是人员列表和过滤器｡
‫这里我的是小调过滤器, 我称之为小调｡
‫现在让我们来看看｡
‫让我们运行这个程序, 看看它是否会显示我们的孩子｡
‫而且它只显示沃尔特, 他是12岁｡
‫好吧, 过滤器起作用了｡
‫你看, 我们传递了一个方法, 我们不需要传递任何参数给这个方法,
‫因为我们在一个委托的位置传递了它｡
‫在这里, 这个过滤器委托, 让我稍微向外滚动一点, 这样你就可以看到它稍微好一点｡
‫所以这里我们需要传入filter delegate,
‫这意味着我们可以传入一个方法, 该方法遵循filter delegates的描述, 这意味着它只需要传递一个ebullient, 并且它需要有一个person类型的参数｡
‫这正是我们的方法斜杠过滤器所做的, 我在这里这样称呼它们｡
‫它们返回一个布尔值, 并且需要人P.
‫所以如果它的小调不遵循结构, 这就行不通了.
‫所以如果我去掉这个然后返回true, 比如说, 这就不起作用了｡
‫你可以看到这里说的是minor, 可以将方法组转换为程序点过滤器委托, 所以它不遵循我们委托的指令｡
‫好吧, 我会的
‫现在, 让我们对其他类型的滤波器执行相同的操作｡
‫所以首先是成年人, 然后是老年人｡
‫让我们来看看｡
‫我们看到孩子们, 沃尔特, 成年人, 艾登和安纳托利, 然后老年人只有西夫｡
‫他已经69岁了｡
‫这就是我对各位代表的介绍｡
‫但是你们可能注意到了一个很烦人的模式, 我们下节课会把它去掉, 那就是匿名方法模式.
‫那到时见｡