Тому я думав про те, наскільки монолітними моїми заняттями приділяється багато часу. Наприклад, у методі Character
класу Jump
може бути посилання на об’єкт звукових ефектів і відтворювати його. Це само по собі добре, але коли враховуються фізика, анімація, зіткнення тощо, метод Jump стає величезним, і Character
клас має багато залежностей від багатьох різних речей. Все-таки це може бути добре. Однак що робити, якщо ми більше не хочемо грати звук, коли персонаж стрибає? Тепер ми повинні знайти той конкретний рядок коду в переплутаному Jump
коді і прокоментувати його чи що завгодно.
Отже .. я думав ..
Що робити, якщо натомість був якийсь AudioSystem
клас, і все, що він робив, було передплатити випадкові події, які його цікавлять в інших класах. Наприклад, Character
клас може мати Jumped
подію (статичну теж, я вважаю), яка піднімається в Character
класі в методі. Тоді Character
клас не знав би нічого про маленький звуковий ефект, який відтворюється, коли персонаж стрибає. Це AudioSystem
був би просто величезний клас, до якого програміст міг би відступити, щоб підключити звукові ефекти з певними подіями, які трапляються в грі через використання статичних подій. Тоді, якщо він отримав занадто великий , він може бути відділений в підкласи , як EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
і так далі.
Тоді в варіантах гри можна встановити прапорець, щоб увімкнути або вимкнути такі звуки, і все, що потрібно зробити, це просто відключити цю систему з простим і єдиним булевим прапором. Ця ідея систем може також поширюватися на такі речі, як фізика, анімація тощо, до того моменту, коли більшість відповідей на ігри, отримані в результаті дій гравця, підключаються через ці складні та роз'єднані системи.
Гаразд, тож моє запитання може бути трохи розпливчастим, але як це звучить? Я насправді ніколи не чув про подібну систему розмов. Це все в мене в голові зараз без будь-якого кодування, зробленого до цих пір, можливо, це одна з тих "хороших в теорії, але не на практиці" видів угод. Чи працювала б така система з більшою грою чи вона врешті-решт розпадеться і стане навіть більшою мірою спагетті, ніж оригінальна система?