SINGLETON LÀ GÌ

Bài viết này mình đã nói tới 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 là gì


Đặt vấn đề

Tại nội dung bài viết này mình sẽ nói về 4 thắc mắc hay gặp cùng với singleton pattern.

Singleton Pattern là gì?Tại sao bắt buộc cần sử dụng Singleton Pattern?Làm vắt làm sao để implement Singleton Pattern?Có các cách nào để implement Singleton Pattern?

Định nghĩa về Singleton Pattern

Định nghĩa thì chán nản, nhưng lại trước khi tìm hiểu về vụ việc nào đó, chúng ta rất cần được khám phá có mang về nó trước.

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

Single theo có mang tiếng anh, mình xin được coppy nguim bản:

Singleton is a creational design pattern that lets you ensure that a class has only one instance, while providing a global access point to this instance”

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

Đảm bảo rằng một class chỉ tất cả duy nhất một instance (khởi tạo).Và cung cấp một biện pháp toàn viên để truy hỏi cung cấp cho tới instance kia.

Single này chưa phải đơn chiếc, đơn côi, mà lại mỗi thằng sẽ sở hữu một instance duy nhất.

Vậy, vì sao bọn họ rất cần phải áp dụng Single Pattern?

Đa phần các đối tượng vào một vận dụng các Chịu đựng trách nát nhiệm đến các bước của chúng, tróc nã xuất tài liệu từ lưu trữ (self-contained data) và các tsay mê chiếu vào phạm vi của chúng.

Tuy nhiên, nhiều đối tượng người dùng bao gồm thêm phần đông trách nhiệm với tất cả tác động của nó rộng rộng. Chẳng hạn như quản lý những nguồn tài nguyên bị giới hạn hay là theo dõi và quan sát cục bộ tâm lý của hệ thống.

*
sử dụng Single Pattern

Ví dụ về singleton:

Về một ứng dụng gồm tính năng bật và tắt nhạc nền.

khi người tiêu dùng msinh sống phầm mềm thì ứng dụng đã tự động mlàm việc nhạc nền và nếu người dùng hy vọng tắt thì nên vào setting trong phầm mềm để tắt nó.

Trong setting của phầm mềm chất nhận được người dùng mở tốt tắt nhạc, với vào ngôi trường đúng theo này các bạn sẽ nên thực hiện singleton để quản lí câu hỏi này.

Chắc chắn các bạn đề nghị phải độc nhất vô nhị 1 instance để hoàn toàn có thể sai khiến nhảy hay tắt. Đơn giản do chúng ta chẳng thể sản xuất 1 instance nhằm msinh sống nhạc rồi tiếp nối lại chế tạo ra 1 instance khác nhằm tắt nhạc. Hiện nay sẽ có được 2 instance được tạo ra, 2 instance này sẽ không liên quan mang lại nhau đề nghị quan trọng thực hiện thực hiện bài toán lẫn nhau được.

khi instance nào nhảy thì chỉ có instance kia bắt đầu được phxay tắt cần dẫn đến đề nghị bắt buộc 1 instance.

Xem thêm: Hướng Dẫn Cách Gắn Card Màn Hình Rời Cho Laptop Ở Đâu? Mạch Lắp Card Màn Hình Rời Cho Laptop

Singleton sử dụng để làm gì?

Vấn đề nhưng singleton giải quyết và xử lý là:

Đảm nói rằng 1 class chỉ có một instance tuyệt nhất với class này luôn sẵn sàng nhằm áp dụng sinh sống bất kỳ thời điểm hoặc vị trí như thế nào vào ứng dụng áp dụng của bọn họ.Việc làm chủ bài toán truy vấn giỏi rộng bởi chỉ có một biểu hiện tuyệt nhất.cũng có thể làm chủ số lượng diễn đạt của một phần bên trong giớn hạn hướng dẫn và chỉ định.

Mục đích của Singleton Pattern

Một class ở trong dạng Singleton bao gồm nghĩa là: nó chỉ bao gồm một instance độc nhất vô nhị, ngẫu nhiên nơi đâu những có thể truy vấn tới instance của class singleton kia.

Những xem xét khi thực hiện Singleton

quý khách tránh việc đọc đồ đạc là Singleton bao gồm nghĩa lâu dài chính xác đúng 1 trình bày. Tùy vào trường thích hợp, hoàn toàn có thể có những biểu đạt không giống nhau mang lại những mục đích không giống nhau. Đó cũng chính là điểm mạnh của Singleton đối với Việc sử dụng thay đổi toàn bộ (global variable).

Những kiến thiết pattern có thể dùng cùng với Singleton. lấy ví dụ như, Abstract Factory, Builder, Prototype.

quý khách cần an ninh cùng với gần như giải pháp xử lý nhiều luồng (multithreading). Vì 2 luồng không giống nhau có thể Điện thoại tư vấn cách thức khởi tạo ra sống thuộc 1 thời điểm cùng đã có mặt nhì biểu lộ. Nhưng ví như thực hiện đồng bộ (synchronized) phương thức khởi tạo thành lại gây ảnh hưởng tới công suất.

Singleton là toàn thể. Chính bởi vì vậy, nếu muốn truyền một đối tượng A mang đến đối tượng người tiêu dùng B cách xử trí, bạn hãy xem xét coi chúng ta tất cả thiệt sự phải một đối tượng người tiêu dùng tổng thể hay là không.

Ưu điểm với khuyết điểm của Singleton Pattern

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

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

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

Cần nên thực hiện cho tới keyword trung gian là .instance (hoàn toàn có thể cached Khi sử dụng tần suất nhiều).Chỉ chế tạo một instance độc nhất vô nhị.Làm tăng kết nối thân những script và vấn đề đó thì ko giỏi, các scripts bé nhờ vào quá nhiều vào các singletons với khi singletons đổi khác rất có thể gây ra bug hoặc lỗi.Không thực hiện được đa hình.

Cấu trúc pattern này:

*
cấu tạo singleton

Để thay đổi một class thành Singleton, cần bảo đảm an toàn rằng:

Định nghĩa một attribute là private static với chính là diễn tả tốt nhất của class này.Định nghĩa public static getInstance() dùng làm khởi chế tác đối tượng người tiêu dùng (hàm accessor).Thực hiện nay lazy-init vào hàm accessor (chỉ lúc call bắt đầu khởi sinh sản thể hiện).Constructor là private hay protected, vày chúng ta không muốn client tạo nhiều thể hiệnClient chỉ hoàn toàn 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ông giống có thể dùng cùng rất Singleton. Chẳng hạn, Abstract Factory, Builder, Prototype. Các đối tượng người tiêu dùng Facade với State cũng thường xuyên là Singleton.

Không bắt buộc phát âm thiết bị móc rằng Singleton tức thị mãi sau đúng mực 1 biểu đạt. Có thể bao hàm biểu lộ không giống nhau đến phần nhiều mục tiêu khác biệt. Đây cũng chính là ưu thế của Singleton đối với việc dùng đổi mới toàn bộ (global variable).

Singleton là toàn bộ. Vì vậy, Lúc đơn giản là mong truyền một đối tượng người sử dụng A mang lại đối tượng người tiêu dùng B xử lý, hãy lưu ý đến coi các bạn bao gồm thật sự nên một đối tượng người sử dụng tổng thể hay không.

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

Một số trường đúng theo áp dụng của Singleton Pattern hay gặp là:

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

Bài viết giới thiệu về singleton là gì với phần đa Đặc điểm của nó. Cảm ơn các bạn sẽ coi bào viết của chính mình.