JavaSE入门级-第十五课-JDBC封装

 

前言

封装是面向对象的特性之一,指的是把相同相似 或者 整体性比较强的代码,放在一个类文件中,体现出类的完整性

 

我们观察下列代码:

 

 

 

 

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  使用面向对象思想完成,部门员工系统的封装改造

 

posted @ 2021-07-22 08:50  二娃千里眼  阅读(107)  评论(0)    收藏  举报