Microsoft.Xna.Framework.Game
Sınıf vardır Hizmetler programcı sınıfın tipini ve Ekle yöntemine sınıfının bir örneğini sunarak oyuna bir hizmet eklemenizi sağlar özelliği.
Şimdi, AudioComponent
bunu gerektiren tüm sınıflara ve yöntemlere geçmek zorunda kalmak yerine, Game
örneğin örneğinizi iletip hizmeti ararsınız. ( Servis Bulucu )
Şimdi, oyunların birçok hizmeti (GraphicsDevice, SceneGraph, AudioComponent, EffectsManager, et cetera) olduğundan, temelde Oyunu her şeye geçireceksiniz.
Öyleyse neden bu örnekleri sadece bir Singleton yapmıyoruz? Çünkü, Singletons kötü çünkü küresel bir duruma sahipler, test etmeyi önlüyorlar ve tasarımınızı daha kırılgan hale getiriyorlar. Hizmet konum belirleyicileri eşit olarak birçok kişiye karşı anti-desen olarak kabul edilir, çünkü sadece bir nesneye bağımlılığı geçmek yerine, bu sınıfı hizmetlerin geri kalanıyla birleştiren bir hizmet konum belirleyicisini (Oyun) geçirirsiniz.
Öyleyse neden Hizmetler XNA ve oyun geliştirmede öneriliyor? Oyunlar normal programlardan farklı olduğu ve bileşenleriyle iç içe geçmiş olması ve bir sınıfın işleyişi için gerekli olan her bileşeni geçmek zorunda kalması son derece hantaldır mı? Oyun Hizmetleri o zaman oyun tasarımında gerekli bir kötülük mü? Uzun parametre listeleri ve kuplajı içermeyen alternatifler var mı?