Здравствуйте, гость ( Вход | Регистрация )
ViGOur | Дата 7.4.2009, 22:56 |
Не совсем понял, что имеется ввиду. | |
LE0N | Дата 7.4.2009, 21:58 |
Цитата или туда или туда. Имелось ввиду, что код, который ты собираешься модифицировать, уже написан и везде использован один экземпляр класса. А модификация нужна для рефакторинга, либо для масштабирования своего проекта. Подумай на досуге.... Нужен ли тебе такой плюс вместо пары строк копи-паста... |
|
ViGOur | Дата 7.4.2009, 17:33 |
Это точно, что задача притянута, в приведенной тобой задаче это реализуется таким путем:
В CSessionManager используется указатель на CStore, ну и за счет полиморфизма сохраняется или туда или туда. |
|
LE0N | Дата 7.4.2009, 17:21 |
Цитата LE0N, может быть я что-то не понимаю, но в каком случае нужно будет и что менять? Ну вот захочу я, например, хранить сессии не в файле, а в БД (общая база в локалке). А механизм с файлами будет использоваться ещё в одном месте - т.к. функционал сессионМенеджера полностью подходит. Задача, конечно, притянута за уши, но, я думаю, суть понятна... |
|
ViGOur | Дата 7.4.2009, 8:41 |
А зачем? У синглтона есть один огромный недостаток - если захотелось заменить класс, который используется на данный момент, нужно менять либо сам синглтон, либо лезть в класс его использующий и заменять точку входа. (Теряется такая важная вещь в ООП как полиморфмизм) Думаю если так, тогда что-то у вас не так с планированием! Например есть у нас классы: Пример
|
|
LE0N | Дата 6.4.2009, 21:01 |
Цитата Я тоже так пологал, пока не попробовал работать с "Одиночкой". А я с ним работал в течение года. Теперь вот плююсь.... |
|
Litkevich Yuriy | Дата 6.4.2009, 18:15 |
Почему это не вяжется? однако делегирование и передача ссылки/указателя не одно и тоже.Всё просто - вместо singleton::get_instance(), передавать в тот же конструктор класса, его использующего ссылку на данный объект. Что же касается использования ссылки на объект вместо "Одиночки". Я тоже так пологал, пока не попробовал работать с "Одиночкой". На практике оказалось удобнее использовать "Одиночку" Подобная вещь используется и в Qt - QSqlDatabse - подобен "Именованному Одиночке" |
|
LE0N | Дата 6.4.2009, 18:05 |
Цитата твое фанфаронство уже не развлекает, а раздражает. Слив засчитан. Цитата Приведи код, который может помочь обойтись в 99% случаев без синглтонов. А зачем? У синглтона есть один огромный недостаток - если захотелось заменить класс, который используется на данный момент, нужно менять либо сам синглтон, либо лезть в класс его использующий и заменять точку входа. (Теряется такая важная вещь в ООП как полиморфмизм) И проектировщик системы не может гарантировать того, что наследование там не нужно на 100%. Ещё я бы посоветывал почитать про "антипаттерны".... Цитата помоему одно с другим как-то не вяжется. Почему это не вяжется? Всё просто - вместо singleton::get_instance(), передавать в тот же конструктор класса, его использующего ссылку на данный объект. Когда я перестал юзать синглтоны, у меня сильно возросла реюзабельность кода. На мой взгляд, синглтон - это стремление к функциональному программированию. ООП здесь даже и не пахнет. Всё, что в нём осталось от ООП - это инкапсуляция. |
|
ViGOur | Дата 6.4.2009, 8:34 |
В 99% лучше обойтись делегированием чем теми же синглтонами. Приведи код, который может помочь обойтись в 99% случаев без синглтонов. твое фанфаронство уже не развлекает, а раздражает. Спокойней нужно быть. |
|
trdm | Дата 6.4.2009, 0:13 |
Цитата у меня другие ощущения и опыт. после изучения патернов стало легче понимать чужой код, легче принимать решения по архитектуре и что уж совсем приятно и удивительно, стал меньше переписывать собственные "поделки". Объём этих "поделок" какой ? В 99% лучше обойтись делегированием чем теми же синглтонами. Гибкость кода становится лучше в разы. По поводу фабрик - так не читая про паттерны можно без проблем к ним придти. Ну а про обзерверы и прочую байду вообще речи быть не должно. Самые первые вещи, которые получаются при определённых заданиях. твое фанфаронство уже не развлекает, а раздражает. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 15:54 |