Basit yaklaşım eskiden Singleton<T>
küresel olan şeyi yapmaktır T
. Globallerin de sorunları var, ancak önemsiz bir kısıtlamayı zorlamak için bir sürü ekstra çalışma ve ortak kod içermiyorlar. Bu temel olarak varlık kurucusuna dokunmayı (potansiyel olarak) içermeyen tek çözümdür.
Daha zor, ama muhtemelen daha iyi yaklaşım, bağımlılıklarınızı ihtiyacınız olan yere iletmektir . Evet, bu Window *
, bir grup nesneye (varlığınız gibi) kaba görünen bir şekilde geçmeyi içerebilir . Brüt görünmesi gerçeği size bir şey söylemelidir: tasarımınız brüt olabilir.
Bunun daha zor olmasının nedeni (daha fazla yazmanın ötesinde), bunun sıklıkla arayüzlerinizi yeniden düzenlemeye yol açmasıdır, böylece geçmek için "ihtiyaç duyduğunuz" şey daha az yaprak seviyesi sınıfı tarafından gereklidir. Bu, oluşturucunuzu her şeye giderken geçmekte olan çirkinliğin çoğunu yapar ve ayrıca bağımlılıkları parametre olarak alarak çok açık hale getirdiğiniz bağımlılık ve bağlantı miktarını azaltarak kodunuzun genel sürdürülebilirliğini artırır. . Bağımlılıklar singleton veya global olduğunda, sistemlerinizin birbirine ne kadar bağlı olduğu daha az açıktı.
Ancak potansiyel olarak büyük bir girişimdir. Gerçekten sonra bir sisteme yapmak düpedüz acı verici olabilir. Şimdilik sisteminizi tek başına, teklitonla yalnız bırakmanız çok daha pragmatik olabilir (özellikle de aksi halde iyi çalışan bir oyun göndermeye çalışıyorsanız; oyuncular genellikle orada bir singleton veya dört tane).
Mevcut tasarımınızla bunu denemek istiyorsanız, mevcut uygulamanız hakkında çok daha fazla ayrıntı göndermeniz gerekebilir, çünkü bu değişiklikleri yapmak için gerçekten genel bir kontrol listesi yoktur. Veya bunu tartışmak gelip sohbet .
Gönderdiğiniz şeyden, "tekil olmayan" yönde büyük bir adımın, varlıklarınızın pencereye veya görünüme erişme ihtiyacından kaçınmak olacağını düşünüyorum. Kendilerini çizdiklerini ve varlıkların kendilerini çizmelerine gerek olmadığını gösterir . Varlıkların yalnızca izin verecek bilgileri içerdiği bir metodoloji benimseyebilirsiniz(pencere ve görünüm referanslarına sahip) bazı harici sistem tarafından çizilmeleri gerekir. Varlık sadece konumunu gösterir ve kullanması gereken hareketli grafik (veya yinelenen örneklerin oluşmasını önlemek için oluşturucunun içindeki gerçek hareketli karakterleri önbelleğe almak istiyorsanız söz konusu hareketli grafiğe bir tür referans). Oluşturucuya basitçe, içinden geçtiği, verileri okuduğu ve dahili olarak tutulan pencere nesnesini draw
varlık için aranan hareketli grafikle çağırmak için kullandığı belirli bir varlık listesi çizmesi söylenir .