简单工厂模式

简单工厂模式解析
本文介绍了简单工厂模式的基本思想,即封装复杂代码以便于重复利用。通过JDBC中的DriverManager.getConnection方法示例,展示了如何根据不同的参数创建不同类型的数据库连接。

正如其名简单工厂模式的思想很简单,就是把复杂代码封装起来便于日后重复调用。我们会使用new MyClass()来创建一个对象。但这种方法十分原始,无法胜任许多情形。

在JDBC中我们需要获得一个Connection来连接数据库。数据库可能是MySQL、Oracle、SQLServer等等。Java提供了java.sql.DriverManager来帮助你连接各种数据库。客户端只需要调用DriverManager.getConnection(String url, String user, String password)方法就可以。

getConnection的代码大概是这样的:

//这段代码是将JavaSE8源码简化、修改后的代码
//修改前的代码还是挺复杂的
//可以看到简单工厂模式可以根据不同的参数(这里是指url)创建并返回不同类型的对象
Connection getConnection(String url) throws SQLException {
    SQLException reason = null;

    //遍历目前支持的数据库,如果url字符串语法正确就返回对应的Connection
    for(DriverInfo aDriver : registeredDrivers) {
        try {
            Connection con = aDriver.driver.connect(url);
            if (con != null) {
                return (con);
            }
        } catch (SQLException ex) {
            if (reason == null) {
                reason = ex;//只有第一次失败会记录该异常
            }
        }
    }

    if (reason != null) {
        throw reason;
    }

    throw new SQLException("No suitable driver found for "+ url, "08001");
}

客户端代码:

Connection connection = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/dbname?user=root&password=123456");
/*do something*/
connection.close();

简单工厂模式的思路主要是:

  • 将创建对象的复杂过程封装起来。
  • 根据参数不同创建不同的对象。

简单工厂模式也有很多局限性,我们之后还将接触到抽象工厂模式和工厂方法模式。

转载于:https://www.cnblogs.com/dongchen/p/5115315.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值