Yeni Nesneler oluşturma vs nesneleri sıfırlama

2 Cevap php

Bunun daha ileri işlemler için izin vermek, ya da sadece dışarıdan yeni bir nesne oluşturmak için / defaults gerekli tüm üye değişkenleri temizler belirli bir nesne için bir 'reset' işlevi oluşturmak için daha iyi uygulama ve / veya daha verimli olarak kabul edilir?

Ben çok çalışan iki yöntem gördüm, ama bir iyi olduğu karar veremez. Tabii ki, veritabanı bağlantıları temsil sınıfları için, yerine gereksiz bağlantı / şalterleri sonuçlanan yeni bir inşa daha sıfırlama yöntemini kullanmak gerekiyor, ama ben soyutlama sınıflar açısından daha bahsediyorum.

Herkes bana her yöntemi kullanmak, bazı gerçek dünya örnekleri verebilir misiniz? Benim durumda ben ORM veya MVC Model bakımından çoğunlukla düşünüyorum. Örneğin, ben ekran için veritabanı nesneleri bir grup almak ve bir operasyonda bunları değiştirmek istiyorsanız eğer.

2 Cevap

Eğer nesneleri yeniden kullandığınızda, Object Pool desen kullanıyoruz.

Düşünün için ana konulardan biri bu nesneler ne kadar devlet olduğunu ve ne kadar o devletin sonraki kullanıcı için sıfırlanması gerekiyor. Bir veritabanı bağlantısı ile tekrar bağlantı yapmak zorunda istemiyorum - aksi takdirde sen de sadece yeni bir tane oluşturabilirsiniz. Fikir bağlı nesneyi bırakmak, ancak herhangi bir sonuç temizlemektir.

Nedenleri nesne havuzu kullanmak için değil:

  • Havuz karmaşıklığı
  • Bellek gerekli değildir, örneği bu nesneleri sahip olma maliyeti. Bu hatta çöp toplama yavaşlatabilir.
  • Sıfırlanması gerekir tam olarak ne devlet kurulması

Bir nesne havuzu kullanmak için nedenler:

  • Bu bir nesne oluşturmak veya yok etmek için çok uzun sürüyor

Kircher and Jain tarafından bir yazıda daha fazla detay.

Sıfırlar performans nedenleriyle yapılır. Standart yaklaşım, bu, bazı mevcut bir geri dönüşüm değil, gerektiğinde yeni bir nesne oluşturmak için. Eğer php, sadece oluşturmak daha yavaş olma endişesi değilseniz. Eğer php yavaş olmak konusunda endişe varsa, durdurmak ve size çok daha yavaş olmasına güveniyor başka şeyler hakkında endişe gerekir.