![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Почитай тему про MVC. Как только контроллер звука изменил громкость он шлет событие об этом, и те объекты кого это интересует должны это событие услышать.
|
|
|||||
|
Вообщем, синглтон в неумелых руках это зло.
Тк бесконтрольное его применение позволяет разводить макаронный код, при этом автор утверждает, что ничего страшного, он же использует шаблоны =)
__________________
Сам себе репортер |
|
|||||
|
terbooter
Цитата:
Цитата:
Цитата:
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
strange mood
|
Цитата:
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
Понятно, что это целиком в зоне ответственности разработчика, но тем не менее. Цитата:
Мне лично больше нравятся целиком статические функции/классы. |
|
|||||
|
mikhailk
Цитата:
Цитата:
GAIKER Цитата:
создаем экземпляр класса в к.-л. глобальном контейнере и туда отсылаем события с параметрами, если необходимо достучаться до к.-л. свойства или метода? При этом да, я, как разработчик, наверняка знаю что данный класс будет в единственном экземпляре, но для теоретически командной работы необходим эпизод обучения (к примеру, документация, в общем не суть важно), т.е. формально возможна ошибка, пусть и элементарная. На сколько я правильно понял? Или может давайте разберем абстрактный пример: Есть приложение с ветвистой иерархической структурой. В приложении много панелей и поп-апов. В приложении также присутствуют звуки, которые можно настраивать, и при этом изменения записываются в SharedObject. В данном примере ключевыми являются настройка звуков и SharedObject. Если делать так, как я привык, то это были бы 2 одиночки. Если это не правильно, то как правильно? ЗЫ. тему про MVC читал, но либо не понял, либо мы говорим о разных вещах, в любом случае обсуждение указанного примера, надеюсь, решит проблему. ЗЗЫ. и спасибо всем, кто пытается научить уму-разуму.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Цитата:
Ругаю себя за мысль в том далеком прошлом "а этот класс хорошо бы сделать статическим, чтобы удобно было обращаться". Лучше б, блин, синглтоном сделал. Сейчас это монтстр, изувеченный if-ами в ходе добавления функционала. Был бы он не статикой - можно хотябы с помощью наследования его расширить было. А сейчас вышел из положения тем что убрал из него всю логику - сделал из него обертку к нормальным человеческим классам (изменить нельзя - придется все приложения перекомпилировать), ну и параметризацию его этими классами. (Правда, один товарищ благоразумно удержался от лепки if-ов и сделал обёртку для своего приложение над статикой. Но это не сильно щас помогает, потому как функционал нужен многим, а не только его приложению) Теперь твердо уверен, что статический класс имеет право на жизнь только тогда, когда не имеет состояния (не содержит внутренних/внешних полей) и то не всегда - как его в духе "стратегии" подпихнуть то? Последний раз редактировалось expl; 02.01.2011 в 21:52. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Никто не предлагает лепить все статикой. Но иногда это удобно.
Например, у меня статическим организован SoundProcessor. Можно было бы его синглтоном сделать, но выигрыша от этого никакого нет. Однако, сам класс очень небольшой, да и расширять его незачем. Цитата:
В смысле, чем он отличается от обычного класса? Я встречал реализацию синглтонов в различных проектах и всегда это затевалось именно в целях глобального доступа к единственному объекту через публичную переменную instance (или что-нибудь типа того). Если не использовать эту особенность синглтона (которая, собственно, и отличает объект синглтона от объекта обычного класса), то зачем вообще использовать синглтон? Для контроля рождаемости? ![]() |
|
|||||
|
Цитата:
![]() Не, я сам юзаю статику для фабрик контролов, фабрик стилей текстовых полей, для общих, ни от чего не зависящих алгоритмов - пока полёт нормальный (не огреб ещё с ними )Цитата:
Забыл совсем: есть исключение: классы-стратегии можно сделать синглтонами, чтобы не создавать их каждый раз (но это касается только классов без состояния) А контроль рождаемости - это защита от почесывания правого уха левой пяткой - только лишнее ограничение в коде. Бывало просто: "А теперь нам нужен второй сервис - чисто для ..., т.к. чтобы ... работало надо на другой сервер ходить" - и понеслось: - перед использованием синглтона лепим флаг "использовать особый сервис" - лепим внутрь ветку if-а, которая меняет url-ки к которым класс должен обращаться; - поиспользовали - надо вернуть флаг обратно - чтобы приложение работало Веселье еще то. (и при этом всём надеемся, что пока синглтон работает с этими настройками к нему не обратятся другие части приложения, считая, что он настроен по-дефолту) Последний раз редактировалось expl; 02.01.2011 в 22:38. |
|
|||||
|
Цитата:
![]() Так вот, мне нужно знать что SharedObject у меня может записываться только в одном экземпляре класса, что никто не перепишет записанное значение. Или тоже самое относительно настроек звука и пр. Т.е. глобальный доступ - да, это удобно, но основное, что мной движет - то, что необходим единственный экземпляр. Почему тогда у меня возникли сомнения? Потому что, к примеру, класс Main (базовый класс приложения) и другие глобальные контейнеры создаются тоже в единственном экземпляре, при этом никому и в голову не приходит реализовывать их через сингл. Вот проведя такую параллель после того как количество одиночек в текущем проекте перевалило за 5, и появились сомнения.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|