Re: Мысль про паттерны проектирования
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 12.06.10 19:26
Оценка:
Здравствуйте, XopoSHiy, Вы писали:

XSH>Когда книжку "Design patterns" банды четырех переводили на русский, случился небольшой казус.

XSH>.......
XSH>Надеюсь этот мой пост ускорит у кого-нибудь выход из этой разрушительной фазы.
Спасибо, Кэп!
Sic luceat lux!
Re[4]: Мысль про паттерны проектирования
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 12.06.10 22:04
Оценка:
Здравствуйте, Warturtle, Вы писали:

W>Нужно сделать "визуальную" работу с объектами этих классов в App внешней по отношению к ним. Поместить это в LogicCore нельзя, т.к. это потянет за собой зависимости от ненужных и "тяжелых" библиотек. По-моему это самое оно для применения посетителя. Пример на C#.


Посмотрел Ваш пример. Не понял — а что мешает сделать то же самое без Visitor'а?
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[5]: Мысль про паттерны проектирования
От: Warturtle  
Дата: 13.06.10 15:22
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Здравствуйте, Warturtle, Вы писали:


W>>Нужно сделать "визуальную" работу с объектами этих классов в App внешней по отношению к ним. Поместить это в LogicCore нельзя, т.к. это потянет за собой зависимости от ненужных и "тяжелых" библиотек. По-моему это самое оно для применения посетителя. Пример на C#.


КЛ>Посмотрел Ваш пример. Не понял — а что мешает сделать то же самое без Visitor'а?

То же самое не получилось. Пример правда не полностью отражает ситуацию — это да, там еще сериализация была. Можно, конечно, было сделать виртуальный метод с показом диалогов, но тут не получалось без использования рефлекшена получить из десереализованного объекта некоего класса получить объект его класса-наследника.
Re[5]: Мысль про паттерны проектирования
От: Warturtle  
Дата: 13.06.10 16:00
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Здравствуйте, Warturtle, Вы писали:


W>>Нужно сделать "визуальную" работу с объектами этих классов в App внешней по отношению к ним. Поместить это в LogicCore нельзя, т.к. это потянет за собой зависимости от ненужных и "тяжелых" библиотек. По-моему это самое оно для применения посетителя. Пример на C#.


КЛ>Посмотрел Ваш пример. Не понял — а что мешает сделать то же самое без Visitor'а?

То же самое не получилось. Пример правда не полностью отражает ситуацию — это да, там еще сериализация была. Можно, конечно, было сделать виртуальный метод с показом диалогов, но тут не получалось без использования рефлекшена получить из десереализованного объекта некоего класса получить объект его класса-наследника.
Re[6]: Мысль про паттерны проектирования
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 15.06.10 07:17
Оценка:
Здравствуйте, Warturtle, Вы писали:

W>То же самое не получилось. Пример правда не полностью отражает ситуацию — это да, там еще сериализация была. Можно, конечно, было сделать виртуальный метод с показом диалогов, но тут не получалось без использования рефлекшена получить из десереализованного объекта некоего класса получить объект его класса-наследника.


Правильно ли я понял, что Visitor понадобился только для того, чтобы Вы могли написать такой код:

foreach (var x in parts)
{
    x.Accept(edit_visitor, null);
}

?
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[7]: Мысль про паттерны проектирования
От: Warturtle  
Дата: 15.06.10 11:27
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Здравствуйте, Warturtle, Вы писали:


W>>То же самое не получилось. Пример правда не полностью отражает ситуацию — это да, там еще сериализация была. Можно, конечно, было сделать виртуальный метод с показом диалогов, но тут не получалось без использования рефлекшена получить из десереализованного объекта некоего класса получить объект его класса-наследника.


КЛ>Правильно ли я понял, что Visitor понадобился только для того, чтобы Вы могли написать такой код:


КЛ>
КЛ>foreach (var x in parts)
КЛ>{
КЛ>    x.Accept(edit_visitor, null);
КЛ>}
КЛ>

КЛ>?
Да. Простое наследование с замещением взаимодействующего с пользователем метода не годилось, как я уже написал, из-за проблем с сериализацией. Т.е. объекты классов-наследников должны были жить в "пользовательской" части программы, при этом "логическая" часть не должна про эту надстройку ничего знать и работать (тоже "полиморфно", разумеется) с объектами "логических" классов. Работать — тут означает и сохранять их "состояние" на диск, чтобы потом восстанавливать эти объекты в памяти. Допустим десериализовали мы объект класса Action1 и нужно теперь получить объект класса-наследника (Action1UI, например), в котором будет замещен метод с "визуальной" частью. И как это сделать без рефлекшена, или каких-то регистраций типов, или еще чего-то такого — непонятно.
Re: Мысль про паттерны проектирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.11.10 16:32
Оценка:
Здравствуйте, XopoSHiy, Вы писали:

XSH>Когда книжку "Design patterns" банды четырех переводили на русский, случился небольшой казус.


Кстати, а откуда эти информация? Ну, о том что казус случился? Насколько я помню книга так и называлась (и называется)
Приемы объектно-ориентированного проектирования. <b>Паттерны </b>проектирования
Автор(ы): Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес
Издательство: Питер
Цена: 253р.

В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования
. Так что использовать слово "Шблон" придумали уже потом. От части потому что их действительно используют в основном как постановочные шаллоны, а не как паттерны распознавания смысловых конструкций.

ЗЫ

С выводами согласен. В прочем примерно о том же сказано в разделе Критика в описании на Википедии.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.