FlyWeight Patterni

Sosyal medyada paylaşın

Flyweight tasarım deseni, bellek kullanımını optimize etmek amacıyla benzer nesnelerin paylaşılmasını sağlayan bir yapısal desendir. Bu desen, çok sayıda benzer nesnenin oluşturulduğu durumlarda performansı artırır ve bellek tüketimini azaltır.
Örnek olarak Space Invaders oyununu klonlamak istediğinizi düşünelim. Bir adet düşman uzay geminiz olacak ve bu geminin aşağıdaki gibi bazı değişkenleri olsun.

Bu gemiden oyununuza birkaç adet olması FlyWeight patterninin ele aldığı bellek kullanımını optimize amacına ters düşmez fakat yüzlerce veya binlerce olduğunu düşünün. FlyWeight deseni tam olarak bu tarz durumlarda karışımıza çıkıyor. Basitçe anlatmam gerekirse EnemyShip’de sabit kalan değişmeyen değişkenleri tek bir yere toplar ve gerektiğinde bu topladığımız yerden erişerek kullanırsak ram’deki değişiklik aşağıdaki görsel gibi olacaktır.

Fark size az gelebilir ama ben gemi ve değişken sayısını örnek olması amaçlı düşük sayıda tuttum. Bunun onlarca sayıdaki versiyonunu düşünerek yorum yapın.
Kod vermek istemiyorum zaten anlaması ve uygulaması çok basit fakat yazılarımdaki amaç yerini bulsun diye birkaç adet uygulama yöntemi vermek istiyorum.

Bunlar

  • Const
  • Static
  • ScriptableObject(Unity)

Aralarında Designer için kullanımı en uygun olan yöntem SCO kullanmaktır. Fakat diğer yöntemleride kullanabilirsiniz seçim sizin.
Size fikir vermek için internette araştırırken bulduğum bir kaynaktan görsel ekliyorum.