小故事:早上刚上班,经理找到大胖说:“大胖啊,咱们下去去聚餐,软件园旁边有好几家不错的餐馆,如巫山烤鱼、海底捞、大鸭梨,你到大众点评调查一下,也问问去过的同事,看看哪家的口碑好。我们有14个人,预定一张大桌子,然后用滴滴约4辆车,每辆车坐3~4人,我们会在11点半出发”。
如果经理是程序员,大胖是计算机,这就是典型的命令式编程。
实际上,现实中一般是经理对大胖说:“大胖啊,我给你交代一件事,咱们下午要聚餐,你在软件园旁边找一家合适的餐馆,我们有14个人,11点半出发”。这种就是声明式编程
有一个学生列表,计算出年龄小于18岁的学生数量
传统命令式编程
//声明一个计数器,遍历学生集合,如果学生年龄小于18岁,计数器+1 int count = 0; Iterator<Student> iter = students.iterator(); while(iter.hasNext()) { Student s = iter.next(); if (s.getAge < 18) { count++; } }声明式编程
//过滤学生构成的流(Stream),只把年龄小于18岁的留下,然后做个统计。 int count = students.stream() .filter(s -> s.getAge() < 18) .count();声明式编程也是一种高度的抽象,我只告诉你我要干什么,至于怎么干,我Don't care
参考资料书-刘欣·码农翻身