Singleton là gì

Bài viết này bản thân đã nói về singleton pattern là gì? Những điểm lưu ý của nó. Cách vận 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 bản thân sẽ nói về 4 thắc mắc hay chạm chán cùng với singleton pattern.

Singleton Pattern là gì?Tại sao yêu cầu dùng Singleton Pattern?Làm vậy làm sao nhằm implement Singleton Pattern?Có các phương pháp làm sao để implement Singleton Pattern?

Định nghĩa về Singleton Pattern

Định nghĩa thì buốn chán, nhưng mà trước lúc khám phá về vấn đề nào kia, họ rất cần phải mày mò khái niệm về nó trước.

Singleton là 1 vào 5 thiết kế pattern của nhóm Creational Design Pattern.

Single theo tư tưởng giờ đồng hồ anh, mình 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 lớn this instance”

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

Đảm nói rằng một class chỉ tất cả tốt nhất một instance (khởi tạo).Và cung cấp một biện pháp toàn viên nhằm tầm nã cấp cho tới instance kia.

Single này không hẳn đơn độc, đơn lẻ, mà lại mỗi thằng sẽ sở hữu được một instance tốt nhất.

Vậy, tại vì sao họ cần được áp dụng Single Pattern?

Đa phần các đối tượng người sử dụng trong một vận dụng các Chịu đựng trách rưới nhiệm đến công việc của bọn chúng, truy hỏi xuất dữ liệu trường đoản cú tàng trữ (self-contained data) cùng những tđắm say chiếu vào phạm vi của chúng.

Tuy nhiên, các đối tượng người dùng bao gồm thêm rất nhiều trách nhiệm cùng tất cả ảnh hưởng của nó rộng rộng. Chẳng hạn nhỏng làm chủ những nguồn tài ngulặng bị số lượng giới hạn tuyệt là theo dõi toàn cục tinh thần của khối hệ thống.

*
thực hiện Single Pattern

Ví dụ về singleton:

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

lúc người dùng msinh hoạt app thì ứng dụng đã tự động hóa msống nhạc nền và giả dụ người dùng ý muốn tắt thì đề nghị vào setting vào app để tắt nó.

Trong setting của app có thể chấp nhận được người tiêu dùng mở hay tắt nhạc, và trong trường hợp này bạn sẽ đề nghị thực hiện singleton nhằm cai quản lí bài toán này.

Chắc chắn chúng ta yêu cầu đề xuất duy nhất 1 instance nhằm có thể sai khiến nhảy giỏi tắt. Đơn giản vày các bạn tất yêu tạo ra 1 instance nhằm mngơi nghỉ nhạc rồi tiếp đến lại chế tạo ra 1 instance không giống nhằm tắt nhạc. Hiện nay sẽ có 2 instance được tạo ra, 2 instance này sẽ không tương quan cho nhau đề xuất không thể triển khai triển khai câu hỏi lẫn nhau được.

Khi instance như thế nào nhảy thì chỉ bao gồm instance kia mới được phnghiền tắt yêu cầu dẫn đến phải yêu cầu 1 instance.

Xem thêm:

Singleton dùng để gia công gì?

Vấn đề cơ mà singleton giải quyết và xử lý là:

Đảm bảo rằng 1 class chỉ có một instance tốt nhất và class này luôn luôn chuẩn bị sẵn sàng nhằm thực hiện sinh sống ngẫu nhiên thời khắc hoặc địa điểm làm sao trong ứng dụng vận dụng của họ.Việc thống trị vấn đề truy vấn tốt rộng bởi vì chỉ tất cả một diễn tả tuyệt nhất.cũng có thể quản lý số lượng biểu thị của một lớp trong giớn hạn chỉ định.

Mục đích của Singleton Pattern

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

Những chú ý Lúc sử dụng Singleton

quý khách hàng tránh việc gọi trang thiết bị là Singleton có nghĩa lâu dài chính xác đúng 1 trình bày. Tùy vào trường vừa lòng, rất có thể bao hàm biểu đạt không giống nhau mang đến mọi mục đích khác biệt. Đó cũng chính là ưu điểm của Singleton so với vấn đề sử dụng trở thành toàn cục (global variable).

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

Quý khách hàng bắt buộc an ninh với phần lớn xử trí đa luồng (multithreading). Vì 2 luồng khác biệt rất có thể Điện thoại tư vấn cách tiến hành khởi chế tạo ở thuộc 1 thời điểm với sẽ có mặt hai biểu hiện. Nhưng giả dụ tiến hành đồng điệu (synchronized) cách thức khởi chế tạo ra tạo nên ảnh hưởng cho tới công suất.

Singleton là cục bộ. Chính bởi vì vậy, nếu muốn truyền một đối tượng người dùng A cho đối tượng B cách xử lý, bạn hãy Để ý đến coi bạn có thật sự đề xuất một đối tượng người tiêu dùng cục bộ hay là không.

Ưu điểm cùng khuyết điểm 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, thực hiện Hotline nó sinh hoạt bất kể đâu.Dữ liệu vận dụng không chuyển đổi vày chỉ bao gồm một instance nhất.Singleton class gồm hỗ trợ interface trong những lúc static class thì lại không. Đây là sự khác hoàn toàn giúp chúng ta nhận thấy rất cần được khẳng định để tạo ra static class xuất xắc singleton class.Hỗ trợ kế thừa, static class thì ko cung cấp thừa kế.

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

Cần bắt buộc thực hiện tới keywords trung gian là .instance (rất có thể cached lúc sử dụng tần suất nhiều).Chỉ chế tác một instance độc nhất.Làm tăng liên kết thân những script cùng vấn đề đó thì ko xuất sắc, các scripts nhỏ nhờ vào vô số vào các singletons và khi singletons biến hóa rất có thể tạo ra bug hoặc lỗi.Không áp dụng được nhiều hình.

Cấu trúc pattern này:

*
cấu tạo singleton

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

Định nghĩa một attribute là private static với chính là biểu đạt duy nhất của class này.Định nghĩa public static getInstance() dùng để khởi chế tạo đối tượng người tiêu dùng (hàm accessor).Thực hiện lazy-init trong hàm accessor (chỉ lúc call new khởi tạo nên thể hiện).Constructor là private tuyệt protected, bởi bạn không muốn client tạo thành những thể hiệnClient chỉ hoàn toàn có thể hotline hàm accessor Lúc mong hoàn toàn có thể hiện tại của class

Lưu ý

Các thiết kế pattern khác hoàn toàn có thể cần sử dụng cùng rất Singleton. Chẳng hạn, Abstract Factory, Builder, Prototype. Các đối tượng Facade cùng State cũng thường xuyên là Singleton.

Không nên đọc sản phẩm công nghệ móc rằng Singleton nghĩa là trường tồn đúng mực 1 bộc lộ. cũng có thể gồm có bộc lộ khác biệt mang lại hầu như mục tiêu khác nhau. Đây cũng chính là ưu thế của Singleton đối với câu hỏi sử dụng vươn lên là toàn cục (global variable).

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

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

Một số trường thích hợp áp dụng của Singleton Pattern thường xuyên gặp là:

Vì class cần sử dụng Singleton chỉ tồn tại 1 Instance cho nên nó thường được sử dụng cho các trường thích hợp xử lý rất nhiều bài xích toán thù buộc phải truy vấn 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.

Xem thêm:

Bài viết giới thiệu về singleton là gì cùng đa số Điểm sáng của nó. Cảm ơn các bạn đang xem bào viết của bản thân mình.


Chuyên mục: Tổng Hợp