0

好吧这里有一个静态实现,我不明白。我以前使用过静态但没有广泛使用,任何人都可以帮助我理解代码。这是代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class Connection_Class {
String driver_ClassName="com.mysql.jdbc.Driver";
String URL_connection="jdbc:mysql://localhost:3306/vendor";
String user="root";
String password="lifesuckzz";
   //can anybody explain what the following line means, especially the static part.......
    private static Connection_Class connectionclass=null;

private Connection_Class(){
    try{
        Class.forName(driver_ClassName);

    }catch(ClassNotFoundException e){
        e.printStackTrace();
    }
}

public Connection getConnection() throws SQLException{
    Connection con=null;
    con=DriverManager.getConnection(URL_connection,user,password);
    return con;
}

public static Connection_Class getInstance(){
    if(connectionclass==null){
                 //I know its returning an instance here
        connectionclass=new Connection_Class();
    }
    return connectionclass;
}


}
4

4 回答 4

5

static意味着变量是类本身的成员(只有一个副本),而不是类对象的成员(每个对象一个)。static您可以在没有对象的情况下访问变量。在这种情况下,您可以调用以获取整个程序共享Connection_Class.getInstance()的单个对象。Connection_Class

于 2013-05-28T09:35:14.417 回答
2

这是一种称为Singleton Design Pattern的设计模式。

当需要一个对象来协调整个系统的动作时,这很有用

http://en.wikipedia.org/wiki/Singleton_pattern

回答你的问题

单例维护对唯一单例实例的静态引用,并从静态 getInstance() 方法返回对该实例的引用。

于 2013-05-28T09:33:04.787 回答
2

Singleton这是设计模式的一个例子。通过将构造函数标记为私有,您可以确保您*控制实例化以使每个 JVM拥有一个且只有一个实例*。

public final class Singleton {

    private static Singleton INSTANCE = new Singleton();

    private Singleton () {
        if (INSTANCE != null)
            throw new IllegalStateException("Already instantiated.");
    }

    // getInstance() method here (refer below)
}

该关键字static 确保 Singleton 可以作为类的成员(如Singleton.getInstance())访问,而无需构造函数调用,因为它已被标记,所以现在不可能private

此外,您的 Singleton 实现不是线程安全的。同步您的getInstance()方法。

public static synchronized Connection_Class getInstance(){
    if(connectionclass == null){
        connectionclass = new Connection_Class();
    }
    return connectionclass;
}

这避免了请求此连接对象的多个线程之间的任何竞争条件。

于 2013-05-28T09:37:09.983 回答
1

这是单例模式的一个示例。它在您的应用程序中创建一个连接类的引用(严格来说,在您的类加载器中)。

Singleton是许多 OO 语言中相当常见的模式,但由于它使测试变得困难,因此经常被视为反模式。

于 2013-05-28T09:32:54.240 回答