Java 单例类
Java 单例类
在本教程中,我们将通过示例学习在 Java 中实现单例设计模式。
在Java中,Singleton是一种确保一个类只能有一个对象的设计模式。
要创建单例类,类必须实现以下属性:
- 创建一个
private
类的构造函数来限制在类之外创建对象。 - 创建一个
private
引用单个对象的类类型的属性。 - 创建一个
public static
方法允许我们创建和访问我们创建的对象。在方法内部,我们将创建一个限制我们创建多个对象的条件。
示例:Java 单例类语法
class SingletonExample {
// private field that refers to the object
private static SingletonExample singleObject;
private SingletonExample() {
// constructor of the SingletonExample class
}
public static SingletonExample getInstance() {
// write code that allows us to create only one object
// access the object as per our need
}
}
在上面的例子中,
private static SingletonExample singleObject
- 对类对象的引用。private SingletonExample()
- 限制在类之外创建对象的私有构造函数。public static SingletonExample getInstance()
- 此方法返回对类的唯一对象的引用。由于方法 static ,可以使用类名访问。
Java 中单例的使用
处理数据库时可以使用单例。它们可用于创建连接池以访问数据库,同时为所有客户端重用相同的连接。例如,
class Database {
private static Database dbObject;
private Database() {
}
public static Database getInstance() {
// create object if it's not already created
if(dbObject == null) {
dbObject = new Database();
}
// returns the singleton object
return dbObject;
}
public void getConnection() {
System.out.println("You are now connected to the database.");
}
}
class Main {
public static void main(String[] args) {
Database db1;
// refers to the only object of Database
db1= Database.getInstance();
db1.getConnection();
}
}
当我们运行程序时,输出将是:
You are now connected to the database.
在我们上面的例子中,
- 我们创建了一个单例类Database .
- dbObject 是一个类类型字段。这将引用类 Database 的对象 .
- 私有构造函数
Database()
防止在类之外创建对象。 - 静态类类型方法
getInstance()
将类的实例返回给外界。 - 在 Main 类,我们有类类型变量 db1 .我们正在调用
getInstance()
使用 db1 获取 Database 的唯一对象 . - 方法
getConnection()
只能使用 Database 的对象访问 . - 自数据库 只能有一个对象,所有客户端都可以通过单个连接访问数据库。
Singleton 是一种设计模式,而不是 Java 特有的特性。设计模式就像我们的代码库,包含世界各地程序员共享的各种编码技术。
重要的是要注意,只有少数场景(如日志记录)使单例有意义。如果您不确定是否使用单例,我们建议您完全避免使用它们。了解更多:Singleton 有什么不好的地方?
java