Wednesday, August 19, 2020

Singleton Class trong Java

 Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Singleton Class trong Java và cách áp dụng nó trong Java với sự trợ giúp của các ví dụ.

Singleton là một mẫu thiết kế chứ không phải là một tính năng dành riêng cho Java. Nó đảm bảo rằng chỉ một thể hiện của một lớp được tạo.

Singleton Class trong Java


Một mẫu thiết kế giống như thư viện mã của chúng tôi bao gồm các kỹ thuật mã hóa khác nhau được chia sẻ bởi các lập trình viên trên khắp thế giới.

Java Singleton

Đây là cách chúng ta có thể sử dụng các singleton trong Java.

  • tạo một phương thức private hạn chế tạo một đối tượng bên ngoài lớp
  • tạo một thuộc tính private tham chiếu đến đối tượng singleton.
  • tạo một phương thức public static cho phép chúng tôi tạo và truy cập đối tượng chúng tôi đã tạo. Bên trong phương thức, chúng ta sẽ tạo một điều kiện hạn chế chúng ta tạo nhiều hơn một đối tượng.

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
   }
}

Trong ví dụ trên,

private static SingletonExample singleObject - một tham chiếu đến đối tượng của lớp.

private SingletonExample () - một phương thức khởi tạo riêng hạn chế việc tạo các đối tượng bên ngoài lớp.

public static SingletonExample getInstance () - phương thức này trả về tham chiếu đến đối tượng duy nhất của lớp. Vì phương thức static, nó có thể được truy cập bằng cách sử dụng tên lớp. 

Sử dụng lớp Singleton

Singletons có thể được sử dụng trong khi làm việc với cơ sở dữ liệu. Chúng có thể được sử dụng để tạo một nhóm kết nối để truy cập cơ sở dữ liệu trong khi sử dụng lại cùng một kết nối cho tất cả các máy khách. Ví dụ,

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();

   }

}

Kết quả:

You are now connected to the database.

Trong ví dụ trên của chúng tôi,

Chúng tôi đã tạo một Cơ sở dữ liệu lớp singleton.

DbObject là một trường kiểu lớp. Điều này sẽ tham chiếu đến đối tượng của Cơ sở dữ liệu lớp.

Cơ sở dữ liệu phương thức khởi tạo riêng () ngăn cản việc tạo đối tượng bên ngoài lớp.

Phương thức kiểu lớp tĩnh getInstance () trả về thể hiện của lớp ra thế giới bên ngoài.

Trong lớp Chính, chúng ta có biến kiểu lớp db1. Chúng tôi đang gọi getInstance () bằng cách sử dụng db1 để lấy đối tượng duy nhất của Cơ sở dữ liệu.

Phương thức getConnection () chỉ có thể được truy cập bằng đối tượng của Cơ sở dữ liệu.

Vì Cơ sở dữ liệu chỉ có thể có một đối tượng, nên tất cả các máy khách có thể truy cập cơ sở dữ liệu thông qua một kết nối duy nhất.

No comments:

Post a Comment