Здравствуйте, russian_bear, Вы писали:
_>А в чем сложность создать у класса-синглтона Pool 2 метода для получения этих 2-х разных пулов? Вопрос ведь в том, нужен ли нам экземпляр класса Pool или нет. В данном случае, вроде бы, не нужен.
То что конфигурация пулов и обработчиков задается конфигом.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: класс Singleton - разобрался, но где в "жизни" приме
_>>А в чем сложность создать у класса-синглтона Pool 2 метода для получения этих 2-х разных пулов? Вопрос ведь в том, нужен ли нам экземпляр класса Pool или нет. В данном случае, вроде бы, не нужен. WH>То что конфигурация пулов и обработчиков задается конфигом.
Ну, скажем, у нас в проекте есть класс ConfigReader (кстати, синглтон ), который читает из .config файла. В случае, если файл меняется (отслеживается по ModifyDate) — на лету читает заново. Класс Pool может в ОБОИХ методах своих смотреть что там в .config через ConfigReader.
Или имеется в виду, что число пулов недетерменировано? Ну так вроде бы до этого вы говорили только про 2 пула?
Ну допустим даже, что их число недетерменированно. Условно говоря, в конфиге имеется набор соответствий "Тип пула (внутренний, внешний, ...) — Размер пула". Пусть тогда тот класс, который вызывает метод получения соединения (или чего там в пуле) через Pool передает этот тип пула. Если боитесь, что придется много кода переписывать — перегрузите метод, пусть по умолчанию это будет всегда внешний тип пула.
Re[16]: класс Singleton - разобрался, но где в "жизни" приме
Здравствуйте, russian_bear, Вы писали:
_>Или имеется в виду, что число пулов недетерменировано?
Детерминированно но зависит от задачи.
_>Ну так вроде бы до этого вы говорили только про 2 пула?
Гдето 2 гдето 1 гдето 10...
_>Ну допустим даже, что их число недетерменированно. Условно говоря, в конфиге имеется набор соответствий "Тип пула (внутренний, внешний, ...) — Размер пула". Пусть тогда тот класс, который вызывает метод получения соединения (или чего там в пуле) через Pool передает этот тип пула. Если боитесь, что придется много кода переписывать — перегрузите метод, пусть по умолчанию это будет всегда внешний тип пула.
Мне ничего не придется переписывать ибо нет синглетона нет проблемы.
У меня есть простой exe'ник который умеет читать конфиг и подгружать dll'ки.
Далие согласно конфигу этот exe'ник создает компоненты при помощи фабрик которые экспортируют dll'ки.
Соответственно есть компонент реализующий пул потоков.
Есть компонент принимающий подключение и по заголовку определяющий в каком пуле и каким обработчиком обработать запрос. Соответствие задается в конфиге.
Есть несколько компонентов реализующих разную обработку запросов.
И ессно есть еще куча всяких компонентов которые к разговору отношения не имеют.
Таким образом я создаю простые кирпичики которые потом собираются в сложную систему просто правкой конфигов.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: класс Singleton - разобрался, но где в "жизни" приме
WH>У меня есть простой exe'ник который умеет читать конфиг и подгружать dll'ки. WH>Далие согласно конфигу этот exe'ник создает компоненты при помощи фабрик которые экспортируют dll'ки. WH>Соответственно есть компонент реализующий пул потоков. WH>Есть компонент принимающий подключение и по заголовку определяющий в каком пуле и каким обработчиком обработать запрос. Соответствие задается в конфиге. WH>Есть несколько компонентов реализующих разную обработку запросов. WH>И ессно есть еще куча всяких компонентов которые к разговору отношения не имеют.
Отличный вариант, просто таки Spring в нескольких предложениях Теперь допустим нам нужно получить из нашего пула соединение. Инстансы каких классов при получении его будут созданы?
Re[18]: класс Singleton - разобрался, но где в "жизни" приме
Здравствуйте, russian_bear, Вы писали:
_>Отличный вариант, просто таки Spring в нескольких предложениях
Дык! Если понимаешь что к чему то и описать можно в несколько предложений.
_>Теперь допустим нам нужно получить из нашего пула соединение. Инстансы каких классов при получении его будут созданы?
Ничего не понял.
Чего, зачем и откуда получить?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: класс Singleton - разобрался, но где в "жизни" приме
_>>Теперь допустим нам нужно получить из нашего пула соединение. Инстансы каких классов при получении его будут созданы? WH>Ничего не понял. WH>Чего, зачем и откуда получить?
соединение из ConnectionPool'а
...Ei incumbit probatio, qui dicit, non qui negat...
Re[20]: класс Singleton - разобрался, но где в "жизни" приме
Здравствуйте, vitaly_spb, Вы писали:
_>>>Теперь допустим нам нужно получить из нашего пула соединение. Инстансы каких классов при получении его будут созданы? WH>>Ничего не понял. WH>>Чего, зачем и откуда получить?
_>соединение из ConnectionPool'а
Запрашиваем соеденение у ConnectionPool'а.
В чем проблема то?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: класс Singleton - разобрался, но где в "жизни" приме
_>>>>Теперь допустим нам нужно получить из нашего пула соединение. Инстансы каких классов при получении его будут созданы? WH>>>Ничего не понял. WH>>>Чего, зачем и откуда получить?
_>>соединение из ConnectionPool'а
WH>Запрашиваем соеденение у ConnectionPool'а. WH>В чем проблема то?
Да нет проблем, инстансы каких классов будут созданы. Нужен ли нам инстанс класса ConnectionPool?
Re[22]: класс Singleton - разобрался, но где в "жизни" приме
Здравствуйте, russian_bear, Вы писали:
_>Да нет проблем, инстансы каких классов будут созданы. Нужен ли нам инстанс класса ConnectionPool?
Все что прописано в конфиге давно создано.
Компоненты получают при создании контекст из которого можно получить другой компонент.
Далие просто запрашиваем (и возможно гдето запоминаем) ConnectionPool и у него запрашиваем Connection.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[23]: класс Singleton - разобрался, но где в "жизни" приме
_>>Тогда создаются лишние инстансы классов. Вот и все. WH>Не создаются.
Вы пока так и не сказали что там создается. Но я еще раз повторюсь — либо инстансы хранятся в синглтоне в уже созданном виде (создаваясь по требованию), либо каждый раз создаются заново, другого не дано. Вопрос лишь в том, нужны ли нам эти инстансы каждый раз.
Re[28]: класс Singleton - разобрался, но где в "жизни" приме
Здравствуйте, russian_bear, Вы писали:
_>>>Тогда создаются лишние инстансы классов. Вот и все. WH>>Не создаются.
_>Вы пока так и не сказали что там создается. Но я еще раз повторюсь — либо инстансы хранятся в синглтоне в уже созданном виде (создаваясь по требованию), либо каждый раз создаются заново, другого не дано. Вопрос лишь в том, нужны ли нам эти инстансы каждый раз.
Так значит нужно различать языки C++ и С# со сборкой мусора? Именно во втором случае Singleton — эффективен?