2013-05-24 18 views
8

arasındaki farklar Ne arasında iki arasında bir karışıklık var.Singleton ve Registry tasarım deseni

tekil
Kontrol örneği iade veya yeni bir tane oluşturun varsa.

Sicil
Kontrol örneği iade veya yeni bir tane oluşturun ve saklayın varsa.

Aralarındaki fark nedir?

+1

Kayıt Defteri, Singleton şablonunu uygular. –

+0

@JohnConde no, öyle değil. Ya da leas gerek yok. –

+0

Anladığım kadarıyla bir kayıt defteri örnek oluşturmaya izin vermiyor. Amaç, şeylerin nasıl oluşturulacağına dair bilginin, kayıt defterinin çoğu müşterisinden başka bir yerde olabileceğidir. Karşılaştığınız şey, büyük ölçüde bir sicil memurunun amacını yitiren bir fabrika ve bir sicilin bir kombinasyonu gibi görünüyor. – Stein

cevap

8

Her ikisi de örnek denetimi ile ilgilidir. Fark, Singleton'un belirli bir sınıfa yalnızca bir örneğinin izin vermesidir; Registry ise örneklerin 1-1 eşlem haritasını içerir. Tipik olarak, anahtar bir sınıftır (veya temsil eder) ve değer o sınıfın bir örneğidir. Örneğin

, Kod Ateşleyici çerçeve bir yüklemek her kütüphane/modele/denetleyici/yardımcı örneğinin ve bu aynı örneklerini her seferinde dönen bir defteri tutar.

1

bir kayıt başlıca amacı, ilgili nesnelerin geçmesine izin için olmasıyla farklıdır. Bakınız Martin Fowler.

1

Sicil Tanımı: Eğer genellikle buna bir dernek olan başka bir nesne ile başlamak bir nesne bulmak ve gelecek kadar dernek kullanmak istediğinizde. Bu nedenle, bir müşteri için tüm siparişleri bulmak istiyorsanız, müşteri nesnesine başlar ve siparişleri almak için bir yöntem kullanırsınız. Ancak, bazı durumlarda başlamak için uygun bir nesneye sahip olmayacaksınız. Müşterinin kimlik numarasını öğrenebilir, ancak referansınız olmayabilir. Bu durumda bir çeşit arama yöntemine ihtiyacınız var - bir bulucu - ama soru şu: Nasıl bulucuya ulaşıyorsunuz?

A Sicil esasen küresel bir nesnedir, ya da en azından öyle görünüyor - o appear may kadar küresel olmasa bile.

Singleton Tanımı: Bazen bir sınıf için yalnızca bir örneğini olması önemlidir. Örneğin, bir sistemde sadece bir pencere yöneticisi (veya sadece bir dosya sistemi veya sadece bir yazıcı biriktiricisi) olmalıdır. Genellikle, iç veya dış kaynakların merkezi yönetimi için tekil kullanılır ve bunlar themselves'a küresel bir erişim noktası sağlar.

Bu tanımlara dayanarak kullanımları tamamen farklıdır.

0

Kayıt defteri ve singleton arasındaki temel fark, tekil bir kerede bir sınıfın tek bir örneğini oluşturmamıza izin vermesidir, oysa kayıt defteri aynı sınıfın birden çok örneğini oluşturmamıza olanak tanır.

+0

kabul edilen cevaba göre çok yeni değil, var ;-) – kleopatra

İlgili konular