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.

Onur Dayıbaşı
Design Patterns

--

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.

Sample for Flyweight

Yapısı

Structure of FleıghtWeight

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--