The Microsoft.Xna.Framework.Game
kelas memiliki Layanan properti yang memungkinkan programmer untuk menambahkan layanan ke permainan mereka dengan menyediakan jenis kelas dan sebuah instance dari kelas dengan metode Tambah.
Sekarang, alih-alih harus meneruskan sebuah AudioComponent
ke semua kelas dan metode yang memerlukannya, Anda hanya melewati Game
contoh Anda dan mencari layanan. ( Pencari Layanan )
Sekarang, karena gim memiliki banyak layanan (GraphicsDevice, SceneGraph, AudioComponent, EffectsManager, dan lain-lain), sekarang Anda pada dasarnya akan menyerahkan Gim ke semuanya.
Jadi mengapa tidak membuat saja contoh ini Singleton? Ya, karena Singletons buruk karena mereka memiliki keadaan global, mencegah pengujian, dan membuat desain Anda jauh lebih rapuh. Penelusur layanan sama-sama dianggap sebagai anti-pola bagi banyak orang karena alih-alih hanya meneruskan ketergantungan pada suatu objek, Anda melewatkan pencari layanan (Game) yang memasangkan kelas tersebut dengan seluruh layanan.
Jadi mengapa Layanan direkomendasikan dalam XNA dan pengembangan game? Apakah itu karena permainan berbeda dari program reguler dan sangat terkait dengan komponen mereka dan harus melewati setiap komponen yang diperlukan untuk berfungsinya kelas akan sangat rumit? Apakah Layanan Game saat itu merupakan kejahatan yang diperlukan dalam desain game? Apakah ada alternatif yang tidak melibatkan daftar parameter panjang dan kopling?