JavaSE入门级-第十五课-JDBC封装
前言
封装是面向对象的特性之一,指的是把相同相似 或者 整体性比较强的代码,放在一个类文件中,体现出类的完整性
l 我们观察下列代码:

l 以上是一个JDBC代码片段,不难发现使用JDBC-API的时候总是要有一些固定步骤,这属于横向代码冗余问题
JDBCUtil 数据库连接工具类
l JDBCUtil工具类,提供的方法全是静态方法,而且工具类一般不希望被拓展

l 私有化构造器

l 加载驱动只需要一次

l 提供获得连接的静态方法,并且提供 常量

l 关闭资源,使用多态

UUID(补充)

UUID指的是 通用唯一识别码,是软件架构的标准,在真实的业务系统研发中实体类的主键,会使用UUID,它的计算结合了以太网地址,纳秒级时间,芯片ID和随机数
抽象类BaseDao<T>
l Dao表示数据应用访问对象,指的是一种java类的功能,特定完成 CRUD操作的类
l Base表示一个软件的基础,标准,规范,大多数为抽象类
l <T>表示泛型,说明此类可以针对多有的Entity操作
声明类型为抽象类;

DML语句封装

关于String…
在编码过程中当数组作为参数有如下等价代码:

客户端代码:

ü String… 在形参中就是 String[],又省去了构造数组的麻烦
ü 注意:动态数组必须是形参的末尾参数(放最后一个)
DQL语句封装
l 查询使用了泛型 T 在子类继承BaseDao之后需要声明它是哪个实体类


l getEntity方法是一个抽象方法,这里应用了模版方法模式,把父类中无法实现的部分,延迟到子类实现
模版方法模式
模版方法设计模式,在23种设计模式中属于行为类设计模式,核心设计理念,在父类中设计好一个事件的主要步骤,将变化的部分变成抽象方法 延迟 到子类中实现
代码实例:
港片卧底的固定套路
l 场景1:呐,卓 sir 是不是这次任务做完,就可以调我回警局啊
l 场景2:喂,卓sir 我快坚持不住了,他们让我砍人啊
l 场景3:卓sir,你赶紧把我调回去吧,这里升的可比局里快多了
l 场景4:卓sir,我们都是奉公守法的好市民嘛
这些是基本的骨架,那翻拍很多警匪卧底中间会有变化的部分,有如下代码:

ü 抽象方法加入,方法可以光说不做
具体的子类继承:

l 子类继承父类,如果父类是抽象类,子类必须实现父类的抽象方法
客户端代码:

运行结果:

读取配置文件
l 简单的DAO改造是为了解决纵向代码冗余问题,在获取连接的时候由于数据库常量信息,写在了java类中,耦合性强,我们可以将它转移到配置文件中
加入配置文件 .properties

配置文件内容展示:

键值对的方式 key – value 声明数据值
使用IO读取文件,获取其中的配置信息

l 注意:高内聚,低耦合是java研发人员的毕生追求,可重用可维护可拓展
练习:
l 使用面向对象思想完成,部门员工系统的封装改造

浙公网安备 33010602011771号