112
Одиночка (Singleton) —
Паттерны программирования игр
доступ к этому экземпляру или создать свой собствен-
ный. Данный класс гарантирует единственность сво-
его экземпляра, но не предписывает, как именно его ис-
пользовать.
Недостаток описанной реализации состоит в том, что
проверка осуществляется только
во время выполнения
.
А вот при использовании паттерна Одиночка (Singleton)
в единственности экземпляра можно убедиться еще
на стадии компиляции. В этом его сущность.
Обеспечить удобство доступа к экземпляру
Удобство доступа — главная причина, почему мы вооб-
ще используем паттерн Одиночка (Singleton). Он позво-
ляет легко обратиться к объекту из любого места про-
граммы, где бы он нам ни понадобился. Но за легкость
приходится платить — мы можем точно так же легко по-
лучить доступ к нему, даже оттуда, откуда
не
хотелось бы
его использовать.
Общее правило здесь такое: область видимости пе-
ременных должна быть настолько узкой, насколько воз-
можно без ущерба для функциональности. Чем меньше
область видимости, тем меньше нам приходится дер-
жать в голове при работе с этой переменной. Прежде
чем беспорядочно использовать объект одиночки с
гло-
бальным
доступом, давайте рассмотрим другие способы
получения доступа к объекту.
• Передать его.
Самое простое решение зачастую
лучшее. Просто передайте объект как аргумент
функции, которой необходим доступ к нему. Стоит
рассмотреть этот вариант, прежде чем называть его
слишком обременительным.
Представьте функцию для рендеринга объек-
тов. Для визуализации чего-либо функции необхо-
дим доступ к объекту, который представляет гра-
фическое устройство и поддерживает состояние
рендеринга. Очень часто все это просто передается
assert()
значит:
«Я утверждаю, что полу-
ченное выражение
долж но быть верным.
Если оно неверно,
то передо мной ошибка,
и я остановлю выполне-
ние программы
прямо
сейчас
, давая вам воз-
можность исправить
ошибку». Это позволяет
создавать соглашения
для разных частей кода.
Если функция утвер-
ждает, что один из ее ар-
гументов не равен
NULL
,
она как бы сообщает:
«Между мной и тем, кто
меня вызвал, есть некое
соглашение, что он пере-
дает мне не
NULL
».
Утверждения помо-
гают отследить ошибку
на том этапе, когда про-
исходит что-то непред-
сказуемое, до того как
она отразится визуально
и станет очевидна для
пользователя. Утвер-
ждения подобны забо-
рам вашего кода, они
ограждают ошибки,
и те не могут выбраться
из фрагмента, который
их породил.
Некоторые используют
термин «внедрение за-
висимости»: код не об-
ращается к глобальной
области видимости для
поиска зависимостей,
а они напрямую переда-
ются ему через параме-
тры. Но иногда термин
«внедрение зависимо-
сти» используется для
более сложных спосо-
бов передачи зависимо-
стей в код.
Do'stlaringiz bilan baham: |