2013-05-24 39 views
8

Tôi có một số sự nhầm lẫn giữa hai thiết bị.Sự khác biệt giữa mẫu thiết kế Singleton và Registry

singleton
Kiểm tra xem thể hiện có tồn tại hay không.

Đăng ký
Kiểm tra xem trường hợp có tồn tại không, hoặc tạo một tài khoản mới và lưu trữ.

Sự khác nhau giữa chúng là gì?

+1

Registry triển khai mẫu Singleton. –

+0

@JohnConde no, it does not. Hoặc tại leas không cần phải. –

+0

Theo như tôi hiểu, đăng ký không cho phép tạo các phiên bản. Mục đích là kiến ​​thức về cách thức công cụ nên được tạo ra có thể ở nơi khác, cách xa hầu hết các máy khách của sổ đăng ký. Những gì bạn so sánh với dường như là một sự kết hợp của một nhà máy và một đăng ký, phần lớn là đánh bại mục đích của một đăng ký. – Stein

Trả lời

8

Cả hai đều là về kiểm soát cá thể. Sự khác biệt là Singleton chỉ cho phép một cá thể của một lớp đã cho trong khi Registry giữ một bản đồ 1-1 của các khóa cho các cá thể. Thông thường, khóa là (hoặc đại diện) một lớp và giá trị là một thể hiện của lớp đó.

Ví dụ, khung Igniter Code giữ một cơ quan đăng ký với một thể hiện của mỗi thư viện/model/controller/helper bạn tải và trả về cùng các cá thể đó mỗi lần.

1

Cơ quan đăng ký khác với mục đích chính của nó là cho phép bạn điều hướng đến các đối tượng liên quan. Xem Martin Fowler.

1

Định nghĩa đăng ký: Khi bạn muốn tìm một đối tượng bạn thường bắt đầu với một đối tượng khác có liên kết với đối tượng đó và sử dụng liên kết để điều hướng đến đối tượng đó. Vì vậy, nếu bạn muốn tìm tất cả các đơn đặt hàng cho một khách hàng, bạn bắt đầu với đối tượng khách hàng và sử dụng một phương pháp trên đó để có được các đơn đặt hàng. Tuy nhiên, trong một số trường hợp, bạn sẽ không có một đối tượng thích hợp để bắt đầu. Bạn có thể biết số ID của khách hàng nhưng không có tham chiếu. Trong trường hợp này, bạn cần một số loại phương pháp tra cứu - một công cụ tìm - nhưng câu hỏi vẫn là: Làm cách nào bạn tìm được công cụ tìm kiếm?

Cơ quan đăng ký về cơ bản là đối tượng chung hoặc ít nhất là đối tượng đó giống như một đối tượng - ngay cả khi nó không phải là toàn cầu vì nó có thể là appear.

Định nghĩa Singleton: Đôi khi điều quan trọng là chỉ có một phiên bản cho một lớp học. Ví dụ, trong một hệ thống chỉ nên có một trình quản lý cửa sổ (hoặc chỉ một hệ thống tệp hoặc chỉ một bộ đệm in). Thông thường, các trình đơn được sử dụng để quản lý tập trung các tài nguyên nội bộ hoặc bên ngoài và chúng cung cấp một điểm truy cập toàn cầu tới themselves.

Dựa trên các định nghĩa này, mức sử dụng của chúng hoàn toàn khác nhau.

0

Sự khác biệt chính giữa đăng ký và singleton là singleton cho phép chúng ta tạo một cá thể của một lớp tại một thời điểm, trong khi sổ đăng ký cho phép chúng ta tạo nhiều cá thể của cùng một lớp.

+0

không nhiều mới so với câu trả lời được chấp nhận, là có ;-) – kleopatra

Các vấn đề liên quan