SINGLETON PATTERN LÀ GÌ

Bài viết này mình đang nói về singleton pattern là gì? Những Đặc điểm của chính nó. Cách áp dụng pattern này.

Bạn đang xem: Singleton pattern là gì


Đặt vấn đề

Ở bài viết này mình đã nói tới 4 thắc mắc thường gặp với singleton pattern.

Singleton Pattern là gì?Tại sao đề xuất sử dụng Singleton Pattern?Làm chũm như thế nào nhằm implement Singleton Pattern?Có những phương pháp nào nhằm implement Singleton Pattern?

Định nghĩa về Singleton Pattern

Định nghĩa thì buốn chán, mà lại trước lúc mày mò về sự việc nào đó, họ cần phải mày mò tư tưởng về nó trước.

Singleton là một trong 5 kiến thiết pattern của nhóm Creational Design Pattern.

Single theo quan niệm tiếng anh, bản thân xin được sao chép nguyên ổn bản:

Singleton is a creational kiến thiết pattern that lets you ensure that a class has only one instance, while providing a global access point to lớn this instance”

Nghĩa là, singleton pattern là một pattern khởi tạo mà:

Đảm bảo rằng một class chỉ gồm độc nhất một instance (khởi tạo).Và hỗ trợ một phương pháp toàn viên để truy vấn cấp tới instance kia.

Single này không phải lẻ loi, đơn chiếc, mà mỗi thằng sẽ có được một instance duy nhất.

Vậy, tại sao họ cần được thực hiện Single Pattern?

Đa phần các đối tượng người sử dụng trong một ứng dụng phần đa chịu đựng trách nhiệm mang lại công việc của bọn chúng, tầm nã xuất tài liệu trường đoản cú lưu trữ (self-contained data) và những tđê mê chiếu trong phạm vi của chúng.

Tuy nhiên, những đối tượng người sử dụng bao gồm thêm phần lớn nhiệm vụ với tất cả ảnh hưởng của chính nó rộng hơn. Chẳng hạn như thống trị những nguồn tài nguyên bị số lượng giới hạn tốt là theo dõi toàn thể tâm lý của khối hệ thống.

*
áp dụng Single Pattern

Ví dụ về singleton:

Về một vận dụng gồm tác dụng bật tắt nhạc nền.

khi người dùng mnghỉ ngơi phầm mềm thì vận dụng đang tự động hóa msinh hoạt nhạc nền cùng nếu như người tiêu dùng mong tắt thì cần vào setting trong phầm mềm nhằm tắt nó.

Trong setting của ứng dụng chất nhận được người tiêu dùng msống xuất xắc tắt nhạc, cùng vào ngôi trường đúng theo này bạn sẽ buộc phải áp dụng singleton để cai quản lí vấn đề này.

Chắc chắn các bạn đề xuất phải độc nhất vô nhị 1 instance nhằm rất có thể ra lệnh nhảy tuyệt tắt. Đơn giản bởi chúng ta bắt buộc chế tác 1 instance nhằm mở nhạc rồi tiếp đến lại tạo 1 instance không giống để tắt nhạc. Lúc này sẽ sở hữu được 2 instance được tạo nên, 2 instance này không liên quan cho nhau cần cần yếu triển khai triển khai bài toán cho nhau được.

khi instance làm sao bật thì chỉ có instance kia bắt đầu được phép tắt đề xuất dẫn đến đề nghị buộc phải 1 instance.

Xem thêm: Cách Chế Biến Ốc Hương - Bật Mí Ngon Như Nhà Hàng 5 Sao

Singleton cần sử dụng để gia công gì?

Vấn đề nhưng mà singleton xử lý là:

Đảm bảo rằng 1 class chỉ có 1 instance độc nhất vô nhị cùng class này luôn luôn sẵn sàng chuẩn bị để sử dụng sinh sống ngẫu nhiên thời gian hoặc địa điểm nào trong phần mềm ứng dụng của bọn họ.Việc thống trị vấn đề truy vấn tốt rộng vị chỉ bao gồm một biểu thị tốt nhất.cũng có thể quản lý số lượng biểu hiện của một lớp bên trong giớn hạn chỉ định và hướng dẫn.

Mục đích của Singleton Pattern

Một class trực thuộc dạng Singleton có nghĩa là: nó chỉ gồm một instance độc nhất, bất kỳ ở chỗ nào mọi rất có thể truy cập tới instance của class singleton kia.

Những để ý Lúc thực hiện Singleton

quý khách hàng tránh việc phát âm trang thiết bị là Singleton có nghĩa trường tồn đúng chuẩn đúng 1 biểu hiện. Tùy vào ngôi trường hòa hợp, có thể gồm có diễn tả không giống nhau mang đến gần như mục đích không giống nhau. Đó cũng chính là ưu thế của Singleton so với vấn đề áp dụng phát triển thành toàn thể (global variable).

Những thiết kế pattern hoàn toàn có thể sử dụng cùng với Singleton. ví dụ như, Abstract Factory, Builder, Prototype.

Quý khách hàng đề nghị cẩn trọng với mọi giải pháp xử lý đa luồng (multithreading). Vì 2 luồng không giống nhau hoàn toàn có thể điện thoại tư vấn thủ tục khởi tạo nên nghỉ ngơi cùng 1 thời điểm và vẫn ra đời nhì diễn đạt. Nhưng giả dụ thực hiện đồng nhất (synchronized) phương thức khởi tạo nên tạo nên ảnh hưởng tới hiệu suất.

Singleton là tổng thể. Chính vày vậy, nếu muốn truyền một đối tượng A mang lại đối tượng B cách xử lý, các bạn hãy suy nghĩ xem các bạn tất cả thiệt sự đề xuất một đối tượng cục bộ hay không.

Ưu điểm cùng lỗi của Singleton Pattern

Về khía cạnh ưu điểm của pattern này mang lại vượt rõ ràng:

Ai cũng có thể truy cập vào instance của singleton class, triển khai Gọi nó làm việc bất kể đâu.Dữ liệu ứng dụng ko biến hóa bởi vì chỉ bao gồm một instance nhất.Singleton class có hỗ trợ interface trong lúc static class thì lại ko. Đây là việc khác hoàn toàn giúp chúng ta phân biệt rất cần được xác minh để chế tác static class hay singleton class.Hỗ trợ kế thừa, static class thì không cung cấp thừa kế.

Một số nhược điểm của pattern này:

Cần phải thực hiện tới từ khóa trung gian là .instance (có thể cached Lúc sử dụng tần suất nhiều).Chỉ tạo một instance tuyệt nhất.Làm tăng liên kết giữa những script cùng điều này thì không tốt, các scripts nhỏ phụ thuộc vào quá nhiều vào các singletons và khi singletons biến đổi rất có thể tạo ra bug hoặc lỗi.Không thực hiện được đa hình.

Cấu trúc pattern này:

*
kết cấu singleton

Để đổi thay một class thành Singleton, đề xuất bảo đảm rằng:

Định nghĩa một attribute là private static cùng đó là miêu tả độc nhất vô nhị của class này.Định nghĩa public static getInstance() dùng làm khởi chế tạo ra đối tượng người dùng (hàm accessor).Thực hiện lazy-init vào hàm accessor (chỉ Khi Hotline bắt đầu khởi tạo ra thể hiện).Constructor là private xuất xắc protected, bởi vì bạn không muốn client sinh sản các thể hiệnClient chỉ có thể gọi hàm accessor khi ước ao hoàn toàn có thể hiện tại của class

Lưu ý

Các kiến thiết pattern khác có thể sử dụng với Singleton. Chẳng hạn, Abstract Factory, Builder, Prototype. Các đối tượng người dùng Facade và State cũng hay là Singleton.

Không đề xuất đọc thứ móc rằng Singleton tức là vĩnh cửu đúng chuẩn 1 biểu đạt. cũng có thể bao hàm biểu đạt khác nhau mang đến rất nhiều mục đích khác nhau. Đây cũng là ưu điểm của Singleton đối với Việc cần sử dụng trở thành cục bộ (global variable).

Singleton là toàn bộ. Vì vậy, Lúc đơn giản dễ dàng là ước ao truyền một đối tượng người sử dụng A mang đến đối tượng người sử dụng B giải pháp xử lý, hãy quan tâm đến coi chúng ta có thiệt sự nên một đối tượng toàn bộ hay không.

Sử dụng Singleton Pattern lúc nào?

Một số ngôi trường hòa hợp áp dụng của Singleton Pattern thường chạm chán là:

Vì class sử dụng Singleton chỉ tồn ở một Instance nên nó thường được sử dụng cho các trường phù hợp giải quyết và xử lý hồ hết bài xích tân oán buộc phải truy cập vào các áp dụng như: Shared resource, Logger, Configuration, Thread pool,..Sử dụng vào một số trong những class của core java như: java.lang.Runtime, java.awt.Desktop.

Bài viết ra mắt về singleton là gì và gần như điểm sáng của chính nó. Cảm ơn các bạn đang xem bào viết của bản thân.