TASARIM ÖRÜNTÜLERİ
Flyweight
Structural Patterns bir örneği olan Flyweight örüntü nesneden binlerce, milyonlarca olduğu durumda bellekte kapladığı alanı azaltmak kullanılan bir örüntüdür.
Bilgi Notu: Diğer tüm Tasarım Örüntüleri yazıma bu linkten ulaşabilirsiniz.
Hangi Durumda
Sınıfın içerisinde hep aynı değerleri alan değişkenleri bir veri yapısı haline getirip ortak(shared) olarak cache’den kullanmasını sağlatan bir örüntüdür.
Üretilecek sınıf sayısı bir veya iki tane oldugunda bu örüntüyü kullanmak anlamlı degildir ancak milyonlarca aynı sınıftan oluşturuyorsak bellek önemli olmaya başlar ve bu durumu performanslı çalıştırabilmek için bu örüntü kullanılmalıdır.
Örnek Kullanım
Oyunlardaki parçacık sistemleri veya ASD’nin Metamorphosis Scene Demosunu izlediğimizde bir sürü karınca ve böceğin aynı anda hareket ettiğini görebiliriz. Bu durumda tüm nesnenin tüm alanlarını bellekte tutmak ciddi bir performans kaybına neden olacaktır.
Aşağıdaki alanlardan ortak alanları shared bir yapıda tutarak bellek kullanımını azaltabiliriz.
Ortak Alanlar (intrinsic states):
- boyut
- renk
- hız
Ortak Olmayan Alanlar (extrinsic states)
- konum
Buradaki bir sürü karınca ve böceği nasıl oluşturulduğunu görebilirsiniz. Factory makeInsect dediğimiz zaman örneğin karınca oluşturulurken konum alanı dışındaki tüm özellikler HashMap<String, Insect> shared alanından çekilerek kullanılabilir. Bu durumda sizin bellekten kullanacağınız alan sadece konum için olan float x ve y alanı olacaktır.
Yapısı
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.