Замена синглтонов
От: Dez  
Дата: 18.03.13 17:16
Оценка:
Всем привет.
Такой вопрос.
Есть приложение которое реализовано как набор синглтонов.
В нем каждый класс синглтон дергает функции другого класса синглтона.

Вопрос — как правильно заменить это на "нормальную" объектную модель.

В частности если делать класс-фабрику — то тут возникает ситуация когда при инициализации одного класса мы должны передать ему в конструкторе вагон поинтеров на другие классы.
Ну или делать "сторедж" интерфейсов который будет возвращать поинтер на интерфейс по имени или по типу.

Может есть что-то более красивое и адекватное ?
Re: Замена синглтонов
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.03.13 18:40
Оценка:
Здравствуйте, Dez, Вы писали:

Dez>Всем привет.

Dez>Такой вопрос.
Dez>Есть приложение которое реализовано как набор синглтонов.
Dez>В нем каждый класс синглтон дергает функции другого класса синглтона.

Dez>Вопрос — как правильно заменить это на "нормальную" объектную модель.


Dez>В частности если делать класс-фабрику — то тут возникает ситуация когда при инициализации одного класса мы должны передать ему в конструкторе вагон поинтеров на другие классы.

Dez>Ну или делать "сторедж" интерфейсов который будет возвращать поинтер на интерфейс по имени или по типу.

Dez>Может есть что-то более красивое и адекватное ?


Это же все за тебя сделано в IoC Фреймворках.
Re: Замена синглтонов
От: Miroff Россия  
Дата: 18.03.13 19:04
Оценка:
Здравствуйте, Dez, Вы писали:

Dez>Может есть что-то более красивое и адекватное ?


Dependency Injection
Re: Замена синглтонов
От: Doc Россия http://andrey.moveax.ru
Дата: 19.03.13 02:39
Оценка:
Здравствуйте, Dez, Вы писали:

Dez>В частности если делать класс-фабрику — то тут возникает ситуация когда при инициализации одного класса мы должны передать ему в конструкторе вагон поинтеров на другие классы.


1) Для разруливания зависимостей есть IoC Фреймворки
2) А что у класса много зависимостей, это надо рефакторить код. Может такой класс много чего делает?
Re[2]: Замена синглтонов
От: Dez  
Дата: 19.03.13 08:37
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, Dez, Вы писали:


Dez>>Может есть что-то более красивое и адекватное ?


M>Dependency Injection


На вид то что нужно.
Следующий вопрос — как сохранять указатели на интерфейсы ?
Т.е. внутри класса хранить шаред/вик поинтер на внешний интерфейс ? — дабы гарантировать что мы не обратимся к удаленному объекту при закрытии апликейшина.
Или есть более красивый вариант ?
Re[3]: Замена синглтонов
От: Dez  
Дата: 19.03.13 08:41
Оценка:
Здравствуйте, Dez, Вы писали:

Dez>Здравствуйте, Miroff, Вы писали:


M>>Здравствуйте, Dez, Вы писали:


Dez>>>Может есть что-то более красивое и адекватное ?


M>>Dependency Injection


Dez>На вид то что нужно.

Dez>Следующий вопрос — как сохранять указатели на интерфейсы ?
Dez>Т.е. внутри класса хранить шаред/вик поинтер на внешний интерфейс ? — дабы гарантировать что мы не обратимся к удаленному объекту при закрытии апликейшина.
Dez>Или есть более красивый вариант ?

Пока единственное что приходит в голову — так это удаление объектов в обратном порядке их создания.
Re: Замена синглтонов
От: __kot2  
Дата: 19.03.13 18:47
Оценка:
Здравствуйте, Dez, Вы писали:
Dez>Всем привет.
Dez>Такой вопрос.
Dez>Есть приложение которое реализовано как набор синглтонов.
Dez>В нем каждый класс синглтон дергает функции другого класса синглтона.
можно заменить вагон синглтонов на один синглтон, который будет содержать ссылки на эксземпляры остальных классов. конечно, ф-ть кроме создания-разрушения пихать в этот синглот не нужно
Re[2]: Замена синглтонов
От: Ромашка Украина  
Дата: 19.03.13 19:06
Оценка: 1 (1) -1
Здравствуйте, Miroff, Вы писали:
Dez>>Может есть что-то более красивое и адекватное ?
M>Dependency Injection

Хрен редьки не слаще.


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[3]: Замена синглтонов
От: robin_of_the_wood Россия  
Дата: 19.03.13 19:15
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Здравствуйте, Miroff, Вы писали:

Dez>>>Может есть что-то более красивое и адекватное ?
M>>Dependency Injection

Р>Хрен редьки не слаще.


А что слаще?
Не ради флуда а реально интересно. Может я отстал от последних веяний.
А уж если я правильно понял, что ТС интересуют именно С++ решения, то особенно интересно.
Проектирование велосипедов для слепых жирафов
Re[3]: Замена синглтонов
От: AndrewJD США  
Дата: 19.03.13 19:16
Оценка:
Здравствуйте, Ромашка, Вы писали:

Dez>>>Может есть что-то более красивое и адекватное ?

M>>Dependency Injection

Р>Хрен редьки не слаще.


А что не так?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re: Замена синглтонов
От: vmpire Россия  
Дата: 17.05.13 13:03
Оценка: +2
Здравствуйте, Dez, Вы писали:

Dez>Всем привет.

Dez>Такой вопрос.
Dez>Есть приложение которое реализовано как набор синглтонов.
Dez>В нем каждый класс синглтон дергает функции другого класса синглтона.
Это называется "процедурное программирование". То, что оно реализовано с использованием объектных конструкций языка, сути не меняет.
Если это действительно стиль, который подходит этому приложению, то можно разве что заменить всё на статические методы. Но это — вряд ли.
В первую очередь, сформулируйте, зачем вы хотите что-то менятью

Нужно в первую очередь выделить из всего этого объекты, то есть совокупность свойств и поведения. А уж дальше решать, что с ними делать.
Например, если появятся классы "обработчики" без состояния и потенциально заменяемые — используйте IoC как тут уже писали. Это и будет "сторедж интерфейсов".
Для классов — обрабатываемых данных ничего делать не надо, они не будут синглетонами.
Для остальных классов — решать индивидуально.

В общем, нужно просто попробовать спроектировать приложение заново (не переписать), а потом искать принципиальную разницу между новой и старой архитектурой.

Dez>Вопрос — как правильно заменить это на "нормальную" объектную модель.

Вы уверены, что именно этого хотите?
Re[3]: Замена синглтонов
От: Tom Россия http://www.RSDN.ru
Дата: 17.05.13 13:05
Оценка:
Р>Хрен редьки не слаще.
Это если ты окосел вконец то та, оно всё на один вкус.
А если ты вминяем то хрен от редьки ой как отличишь...
Народная мудрось
всем все никому ничего(с).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.