Her PHP sınıfı bir Singleton deseni uygulayan, iyi mi

6 Cevap php

her PHP sınıfı bir Singleton deseni uygulayan, iyi mi? Ben çünkü bunun daha az bellek kullanımı olacağını düşünüyorum. Doğru görüş var mı? Teşekkürler!

6 Cevap

Yazılım gerçeği modellemek içindir. Bu OOP var yoludur. dedi, Singleton tüm tırnaklar için bir çekiç değildir. Belirli modellerde kullanabilirsiniz, ancak sadece ayarlamak değil başkaları vardır.

Örneğin atın kişi listesini modeli. Eğer bir kişi sınıf oluşturmak için karar verirseniz, o zaman model üzerinde birden fazla kişi için izin verilmez.

Tüm sınıflar singletons iseniz, neden kullanım sınıfları?

Singletons bazı durumlarda yararlıdır, ama kullanılan aşırı olma eğilimindedir. Eğer tekil paçayı eğer, o zaman muhtemelen kendi amaçlanan nesne yönelimli kullanımlar için sınıfları gerekmez. Onlar hala olsa, kod modülerleştirme için yararlı olabilir.

Eğer sınıfın birden çok örneği var zaman genel olarak, sınıflar çok yararlıdır. Sınıflar nesneler için planları vardır, bu yüzden, genellikle, farklı iç durumu benzer davranışa sahip olan birçok nesneleri oluşturabilir ancak.

Tüm sınıflar Singletons iseniz Yani, ben geri adım ve bir kaç soru sormak istiyorum:

  • Eğer derslere ihtiyacınız var mı?
  • Nasıl yazılım modelleri hakkında doğru düşünüyor musunuz çözmeye çalışıyoruz sorun?

Basit bir kural vardır: bir sınıf sadece bir kez kullanılmak üzere bu kesinlikle emin ise, Singleton uygulamak. Bir kereden fazla kullanılması gerekiyorsa, bunu yapmayın.

Lütfen programm tek örneği sadece sınıfları varsa bu büyük bir kod kokusu gibi görünüyor ve nesne yönelimli programlama için uygun değildir.

Bu çok kötü bir fikir gibi görünüyor. Ben (kullanıcı başına ise) bir oturumda istekleri arasında gereksinim duyduğunuz verileri tutmak veya bir önbellek (eğer sunucu başına) önerebilirim. Bildiğim kadarıyla bellek kullanımı gibi, bir fark that çok yapmamalıyız.

Aslında (fabrika ile birlikte), örneğin Kohana 3 Çerçeve alır;

bu mümkün nereye kadar singleton / fabrika kombinasyonunu kullanır.

Bu mümkündür, sadece cepten tasarım olmaz. Miras (yani ortak sınıfları aynı arabirimi paylaşır), polimorfizm (yani sınıflara) ve kapsülleme (yani nesnelere bir blackbox yaklaşım olan): OOP meant 3 ana özellikleri ile Structuring kolaylaştırmak için.

Onlar can genişletilmiş ve soyutlanamaz rağmen temelde ulaşamayacağı cepten güzellikler alır böylece Singleton, genellikle değildir. Küresel kapsamda alanlı her şeyi ile original prosedürel programlama çeşit olurdu.