Singleton pattern là gì

Singleton pattern là mẫu mã xây cất trực thuộc đội creational. Singleton đảm bảo rằng đang chỉ có một object tuyệt nhất của class được khởi chế tạo ra. Một nguyên tố đặc biệt quan trọng khác của Singleton là object được xem nhỏng một biến đổi “toàn cục”, nghĩa là object kia rất có thể được truy vấn xuất trường đoản cú mọi hầu như địa chỉ trong chương trình.

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

Khi một class được xây đắp theo mẫu mã Singleton, nó chỉ hoàn toàn có thể được khởi chế tạo ra một đợt độc nhất vô nhị. Mọi kinh nghiệm khởi sinh sản không giống sẽ phần đông được điều hướng tới object tốt nhất được khởi tạo ra. Thêm vào kia, object của một Singleton class sẽ không được khởi sinh sản cho đến Khi nó đích thực được thực hiện.

Trong bài học này chúng ta đang lưu ý chi tiết ý tưởng phát minh, kiến tạo, những thực thi và vận dụng của chủng loại xây dựng này.


NỘI DUNG CỦA BÀI Ẩn
1. Singleton pattern
2. Thiết kế UML mang lại Singleton pattern
3. lấy ví dụ thực hiện Singleton pattern
4. Một số cách tiến hành khác của Singleton
5. tóm lại

Singleton pattern


Nếu bạn đang sử dụng windows, rất có thể chúng ta đã có lần thực hiện Control Panel. Quý Khách có để ý rằng, nếu như khách hàng sẽ Open sổ Control Panel, sau đó lại mnghỉ ngơi nó từ một khu vực khác (ví dụ từ Start menu), bạn vẫn chỉ thấy một hành lang cửa số Control Panel.

Tuy nhiên, nếu khách hàng msinh hoạt Chrome, rồi liên tiếp clichồng shortcut của Chrome từ Start menu hoặc desktop, các bạn sẽ thu được không hề ít cửa sổ Chrome khác biệt.

Cách thức chạy chương trình của Control Panel hoàn toàn có thể xem nhỏng tương đồng với ý tưởng của mẫu kiến tạo Singleton: chỉ tất cả một instance (object) tuyệt nhất được tạo nên Lúc lần đầu buộc phải dùng. Tất cả các tầm nã xuất tiếp nối hồ hết điều nhắm tới object được tạo thành.

Tại tinh tướng khác, bí quyết mở nhiều cửa sổ Chrome cùng lúc tương tự như cách thức bạn tạo ra object bình thường: xuất phát từ một class chúng ta tạo ra nhiều object nhằm áp dụng.

Bạn rất có thể đặt thắc mắc, tại vì sao lại số lượng giới hạn sản xuất một object duy nhất?

Trong xây dựng, thỉnh thoảng Việc gồm một object nhất tróc nã xuất toàn cục mang lại lợi ích rất lớn. ví dụ như, bạn phải cách xử trí tệp tin thông số kỹ thuật của vận dụng, bao gồm đọc file, tróc nã xuất những biết tin, bảo quản thông số kỹ thuật. Do file thông số kỹ thuật hay là tuyệt nhất, cùng đề xuất tróc nã xuất trường đoản cú không ít địa chỉ khác biệt vào lịch trình, vấn đề tất cả một object “toàn cục” với độc nhất vô nhị thao tác truy xuất thông số kỹ thuật đơn giản và dễ dàng hơn không hề ít.

Thiết kế UML cho Singleton pattern


So cùng với các chủng loại xây dựng không giống, Single dễ dàng hơn tương đối nhiều, chỉ gồm 1 class độc nhất vô nhị.

Mẫu Singleton áp dụng cho một class sẵn gồm bằng phương pháp tiến hành một số trong những điều chỉnh:

*

quý khách hàng bao gồm xem xét, thay đổi _count (và property Count) là số đông trở thành viên bình thường, tức là nó chỉ sống thọ Lúc khởi tạo nên object. Mỗi lần khởi tạo nên object, _count vẫn lại nhấn quý giá 0. Phương thơm thức Increase là cách tiến hành member, cho nên vì vậy nó cũng chỉ gồm tính năng trong object.

Xem thêm: Hệ Phái Nào Sau Đây Không Có Kĩ Năng Nhiệt Huyết Chiến Đấu? Danh Sách Tướng Dtcl 4

Tuy nhiên, lúc chương trình bên trên chạy, cực hiếm của đổi thay _count tăng đúng thứ hạng thực hiện trên một object chứ không phải bên trên những object không giống nhau. Nghĩa là thực tế chúng ta chỉ gồm một object của Singleton được truy xuất qua property Instance.

Với bạn dạng thực thi bên trên bạn cũng có thể sẽ đắn đo, liệu nhì dòng lệnh

static readonly Singleton _instance = new Singleton();public static Singleton Instance => _instance;bao gồm thực thụ chỉ tạo nên một object duy nhất lúc tróc nã xuất tới property Instance trước tiên tiên?

Quý Khách yên trọng điểm. Biến _instance thực chất là 1 trong những hằng số, ở trong các loại runtime constant, mặc dù nó ko được khai báo với trường đoản cú khóa const. Runtime constant bao gồm điểm lưu ý là sẽ tiến hành khởi sản xuất độc nhất vô nhị một lần, hoặc vào constructor, hoặc ngay lập tức tại khu vực knhị báo, cùng tiếp nối không lúc nào biến hóa giá trị nữa. Nghĩa là object nó chứa sẽ không biến hóa nhìn trong suốt vòng đời của công tác.

Thđọng nhị, vị là một trong những “biến” static, nó được auto khởi tạo ra trong lần thứ nhất client code truy nã xuất.

Do Singleton cần thiết có tác dụng phụ vương, nó cũng thường xuyên được đánh dấu sealed.

Một số bí quyết thực thi khác của Singleton


Đôi khi chúng ta cũng gặp phiên bạn dạng Singleton nlỗi sau:

public sealed class Singleton private Singleton() static Singleton _instance; public static Singleton Instance => _instance ?? (_instance = new Singleton()); Cách tiến hành này không dựa vào đặc điểm khởi tạo ra của thành viên static và hằng readonlgiống như trên. Txuất xắc vào đó, lúc truy xuất cho tới Instance, property này mới khám nghiệm coi backing field của chính nó, _instance, đã được khởi tạo giỏi chưa. Nếu _instance đã làm được khởi chế tạo ra, property Instance đã trả luôn luôn quý hiếm của _instance. Nếu không nó bắt đầu khởi tạo thành cực hiếm đến _instance. Do vậy, object trả về cũng là nhất.

Tuy nhiên, để ý, phương thức tiến hành này không tương xứng cùng với những công tác đa luồng (ko thread-safe).

Quý khách hàng cũng rất có thể gặp phiên bạn dạng đặc biệt quan trọng rộng của Singleton nlỗi sau:

public class Singleton // Private constructor Singleton() // Nested class for lazy instantiation class SingletonCreator static SingletonCreator() // Private object instantiated with private constructor internal static readonly Singleton uniqueInstance = new Singleton(); // Public static property khổng lồ get the object public static Singleton UniqueInstance get return SingletonCreator.uniqueInstance; Phiên bạn dạng được Gọi là lazy instantiation.

Kết luận


Trong bài học này các bạn đang xem xét cụ thể chân thành và ý nghĩa với giải pháp thực thi mẫu mã xây đắp Singleton. Đây là một chủng loại kiến thiết tương đối đơn giản và dễ dàng tuy nhiên được áp dụng hết sức thông dụng. Singleton không những được áp dụng hòa bình cơ mà thường xuyên được phối hợp trong một vài chủng loại kiến thiết khác (nlỗi Builder, Prototype, Abstract Factory).

Xem thêm: Hướng Dẫn 3 Cách Tắt Phím Fn Trên Laptop Dell, Cách Bật / Tắt Phím Chức Năng Fn + F1, F2, F3,

+ Nếu chúng ta thấy site bổ ích, trước lúc rời đi hãy giúp đỡ site bằng một hành vi bé dại để site có thể cải tiến và phát triển với giao hàng bạn xuất sắc hơn.+ Nếu chúng ta thấy bài viết hữu ích, hãy giúp phân chia sẻ tới phần đa bạn.+ Nếu bao gồm thắc mắc hoặc yêu cầu hội đàm thêm, mời chúng ta viết vào phần thảo luận cuối trang.Cảm ơn bạn!


Chuyên mục: Công Nghệ