JavaSE入门级-第十二课-jdk8和持久层
JDK8 新特性
jdk1.8 和 1.5一样是一个重大版本更新,推出很多强大的工具包,现在企业中多数以1.8为标准研发版本
lambda表达式
lambda表达式,也可称为闭包,它推动了java8的发布,lambda表达式重点在实现了函数式接口
lambda表达式语法
(parameters) ->{ statements; }
代码实例:有一个接口JavaInterface1

使用lambda表达式快速实现

上图中我们可以看到,lambda表达式能够快速实现接口,但是这个接口必须是函数式接口,即 只能有一个抽象方法,有点像匿名内部类的实现方式
更多种类型实现

l 语法规则
参数部分如果只有一个参数可以不加( ),方法体如果只有一条语句可以不加{ }
方法体中可以使用return 语句
l 小结
lambda表达式免去了匿名内部类实现接口的语法麻烦,只能实现函数式接口,并且可以访问外部文件的常量
练习:
l 将上文写出的函数式接口 使用 lambda表达式实现
方法引用::
方法引用::可以使用已经存在的方法或者构造方法,来实现接口,提供了一种引用而不执行的方式
方法引用语法
使用一个类名或者对象名引用它的方法,使用关键字 ::
代码实例:有一个接口JavaInterface11 和 一个类Car

他们并没有存在继承实现关系,但是我们可以使用方法引用

更多方法引用
假设存在两个方法如下:

入参是两个接口,而这两个方法在其他类中已经有实现

在客户端中我们就可以使用方法引用,省去中间实现的部分,将接口实现作为参数

方法引用调用构造器

练习:(难)
l 使用方法引用改造工厂方法模式

l 客户端代码:

函数式接口编程
Function Interface 其实就是只有一个抽象方法的接口,java8开始接受了函数式接口思想,既是把接口作为方法传参的一部分,java中很多函数式接口已经被定义出来需要查阅相关文档,当然也可以自己独立实现
l 代码实例:

接口默认实现
直接看代码:

(注意:default 修饰接口中的方法,可以加方法体)
LocalDate 和 LocalDateTime
在java.util.*中我们已经学习了几乎都是过时的 java.util.Date,也了解java.util.Calendar但是这两个类在研发中心并没有很遍历,JDK重做了日期以及时间的两个类
java.time.LocalDate
日期处理类,更方面的操作日期
java.time.LocalDateTime
代码实例:

练习:
l 探索两个日期类还有没有什么别的好用的方法
java.util.Stream
Stream表示能应用在一组元素上一次执行的操作序列
获得Stream
l 数组获得Stream

l List获得Stream

Stream提供的foreach遍历函数式接口

练习:
l 练习使用Stream和lambda组合快速遍历List
持久层
软件发展史
l 早期软件
第一代软件产品,没有明确的分层,直接讲所有的东西通过最快速的方式展现,例如:计算器,控制台程序
l 软件发展
硬件技术的进步,软件也出现的技术集成规范,研发人员会把软件分成4个层次,每一个层次几种做独立的事件,层次之间相互访问,来提高软件质量

(注意:除分层架构意外,还有 事件驱动架构,分布式架构,微服务架构)
层次之间的访问顺序
之上而下的访问,不能出现跨域访问

持久层认识
在以往的业务系统中,我们使用对象保证数据的完整性,使用全局变量,集合或者数组来储存数据,但这样的数据是临时的,我们也称为瞬态的,只要服务器重启所有的数据就归0
l 持久层是一个使数据永久化的一个层次
持久层使用相对封装完善的业务代码,将瞬态数据变成永久的,我们称为 持久化
l 引入数据库
持久层提供了访问数据库的操作,并且能够完成对应的 新增,修改,删除,查询 业务
持久层封装的业务对象称为 DAO (Database Access Object)

浙公网安备 33010602011771号