福利时间如果你正在备战面试或者想要学习其他知识给大家推荐一个宝藏知识库作者整理了一些列 Java 程序员需要掌握的核心知识有需要的自取不谢。知识库地址https://farerboy.com/Java 单例模式在本教程中我们将借助示例学习单例设计模式以及如何在Java中应用它。Singleton单例是一种设计模式而不是Java特有的功能。它确保只创建一个类的实例。设计模式就像我们的代码库一样其中包含世界各地程序员共享的各种编码技术。Java 单例模式下面是我们如何在Java中使用单例的方法。创建一个private的构造函数该构造函数限制在类之外创建对象创建一个引用单例对象的private属性。创建一个public static方法该方法允许我们创建和访问我们创建的对象。 在方法内部我们将创建一个条件来限制我们创建多个对象。这是一个实例。class SingletonExample { //引用对象的私有字段 private static SingletonExample singleObject; private SingletonExample() { //SingletonExample类的构造函数 } public static SingletonExample getInstance() { //编写仅允许我们创建一个对象的代码 //根据需要访问对象 } }在以上示例中private static SingletonExample singleObject - 对类对象的引用。private SingletonExample() - 私有构造函数用于限制在类外部创建对象。public static SingletonExample getInstance() - 此方法返回对该类唯一对象的引用。 由于该方法是静态的因此可以使用类名进行访问。使用单例类类使用数据库时可以使用单例。它们可用于创建连接池以访问数据库同时为所有客户端重用相同的连接。例如class Database { private static Database dbObject; private Database() { } public static Database getInstance() { //创建对象如果尚未创建 if(dbObject null) { dbObject new Database(); } //返回单例对象 return dbObject; } public void getConnection() { System.out.println(现在已经连接到数据库。); } } class Main { public static void main(String[] args) { Database db1; //引用Database的唯一对象 db1 Database.getInstance(); db1.getConnection(); } }当我们运行程序时输出将是现在已经连接到数据库。在上面的示例中我们创建了一个单例类Database。dbObject是一个类类型字段。 这将引用类Database的对象。私有构造函数Database()可防止在类外部创建对象。静态类类型方法getInstance()将类的实例返回给外部。在Main类中我们具有类类型变量db1。 我们正在使用db1调用getInstance()来获取Database的唯一对象。该方法getConnection()只能使用的对象进行访问Database。由于Database只能有一个对象因此所有客户端都可以通过单个连接访问数据库。需要注意的是只有少数情况如日志使单例有意义。甚至数据库连接通常也不应该是单例的。如果您不确定是否使用单例我们建议您避免完全使用单例。