Josh'un cevabı harika, ama eklemek istiyorum:
Varlık / Bileşenin en havalı özelliklerinden biri, oyununuzdaki her "şeyin" oluşturulduğu ve yönetildiği veri odaklı yöntemdir. Gördüğüm kadarıyla, oluşturduğunuz bileşen türleri ve sistemlerin güzel bir kütüphanesine sahip olduğunuzda, minimum kod değişiklikleri ile hemen hemen her şeyi oluşturabilirsiniz. (Not: minimal! = 0 )
Oyununuzu davranış açısından tanımlayarak ve kendinize bu davranışları anında değiştirme yeteneği vererek - çalışma zamanında, başlatma sırasında bunları bir komut dosyasından veya veritabanından yükleyerek vb. - yeni olasılıkların tüm dünyasını açarsınız. Gölgelerinizin neden beklediğiniz yere inmediğini görmek ister misiniz? Işığınıza bir kamera / POV bileşeni ekleyin.
Varlık / bileşen, blokları oluşturduğunuz sürece istediğiniz her şeyi oluşturmanıza olanak tanır.
Ayrıca, çoklu kalıtım, tek kalıtımla aynı soruna neden olur. Hiyerarşiye bir nitelik veya davranış eklediğinizde, yayılır. Derin hiyerarşiler yaptığınız sürece, gereksiz ağırlık taşıdığınız, kodu çoğalttığınız veya çakışmaları çözdüğünüz durumlarla karşılaşırsınız. Oyununuzu veri olarak hayal ettiğinizde bunların çoğu önlenebilir.
Son birkaç hafta içinde bununla oynamaya başladım, ancak işlerin ne kadar basit hale geldiğinden çok etkilendim. Gümüş bir mermi değil - bir bileşene lambda eklemenin bir sorunu çözmenin en temiz ve en uygun yolu olduğu birkaç durumla karşılaştım - ancak bunu söyleyebilirseniz oldukça harika bir model.
Biraz ilgili bir notta: veri merkezli uygulamalarda (web siteleri, vb.) Büyük, sıkıcı bakım jeneratörlerinden biri, hiyerarşik nesneleri ilişkisel veritabanlarıyla eşlemektir. Etrafta çok şık çözümler var, ama sonuçta hepsi hiyerarşileri düzleştirmek için tasarlanmış hackler. Modelinizi uygulamanın amacına hizmet edecek şekilde oluşturmak yerine, etkili bir hiyerarşi ve mantıksal ilişkisel temsil arasında uzlaşmaya varırsınız. Bir varlık / bileşen sistemi olarak uygulamalarımdan birinde oldukça büyük bir hiyerarşi yeniden oluşturma fikriyle oynuyorum - hiyerarşiyi bırakın ve veritabanını uygulamanın geri kalanı için Altın Standart haline getirin - ve bu umut vericidir.
Performans sorunlarını ele alabilecek dinamik kod oluşturma / kod önbellekleme gibi özellikleri entegre ettiğinizde, OOP'un yeniden kullanılabilir kod hedefini çok daha iyi bir şekilde gerçekleştirebilecek hızlı, esnek ve mantıklı bir mimariyle bitirirsiniz.