🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
当考虑继承层次结构时,很容易算出同样的实例同时可以使用不同的规则。考虑一个BlogEntry 类的实例,是表示一个blog post 的对象同时是一个更通用的entry entity 。在实践中,这可以用来处理不同指定级别的实例。在代码中这可以用来进一步避免代码重复。 继续CMS的例子,假设有一个页面的需求在,显示一个描述和所有仓库中的内容的状态,无论是否他们是文章或者blog posts 。可以有一个不重复的BaseEntry类型的列表,而不是对于每个类型的容器。 ~~~ var list = new List < BaseEntry > (); list.add(new Article(“Article #1”, “...”, Date.now())); list.add(new BlogEntry(“Blog Entry #1”, “...”)); list.add(new Article(“Article #2”, “...”, Date.fromString(“2020-01-01”))); for(entry in list) trace(entry.title + “ [“ + entry.onlineInfo + “]”); ~~~ 可以简单的操作列表,使用BaseEntry类声明中提供的字段。例如,需要创建一个列表只包含发布的条目,很简单的应用一个过滤器到原来的列表,并获得缩减之后的副本: ~~~ var filteredList = list.filter(function(entry) { return entry.isOnline(); }); ~~~ 注意,在通过的函数你不用强制声明参数条目的类型,因为编译工具可以从使用的上下文中进行推断。