Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使数据库类成为单例_Java_Design Patterns_Singleton - Fatal编程技术网

Java 如何使数据库类成为单例

Java 如何使数据库类成为单例,java,design-patterns,singleton,Java,Design Patterns,Singleton,我不熟悉设计模式。我想为这个数据库类使用单例设计模式。有人能帮我吗 这是我的完整代码: public interface ResourceConnection { public Connection getConnection(); } public class ResourceConnectionFactory { public ResourceConnection getConnection() { return new MysqlResourceConne

我不熟悉设计模式。我想为这个数据库类使用单例设计模式。有人能帮我吗

这是我的完整代码:

public interface ResourceConnection {
    public Connection getConnection();
}

public class ResourceConnectionFactory {
    public ResourceConnection getConnection() {
        return new MysqlResourceConnectionImpl();
    }
}


public class MysqlResourceConnectionImpl implements ResourceConnection {

    Connection con = null;

    @Override
    public Connection getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/library", "root", "root");
        } 
        catch (ClassNotFoundException ex) {
            Logger.getLogger(MysqlResourceConnectionImpl.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MysqlResourceConnectionImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return con;
    }
}

要使任何一个班级成为单身,你必须保证以下几件事。(单例设计模式可以应用于任何地方。数据库类没有不同的实现)

  • 用于限制类实例化的私有构造函数
  • 同一类的私有静态变量,该变量将存储该类的唯一实例
  • 获取类的此实例的公共方法。这是其他类的访问点

  • 您可以从中使用此链接。此url的所有功劳。

    我理解您所做的是为应用程序获取单个连接。如果您在多个位置使用该连接,则很容易出错。您可以使用连接池为您设置连接,而不必这样做。以下是一个例子

    是什么让你认为对于一个你称之为“数据库类”的类来说,使它成为单例的方法与其他类相比有什么不同?请查看此链接