Паттерн строитель
От: VVVa  
Дата: 27.04.19 15:42
Оценка: 6 (2) -3
Читаю и недогоняю https://metanit.com/sharp/patterns/2.5.php
А что если у создаваемых классов разное количество и назначение полей и их нужно инициализировать или к примеру неодинаковое количество частей ... ?(интерфейс у этих классов одинаковый)
Какой-то непаттерн а костыль ...
Отредактировано 28.04.2019 17:48 VVVa . Предыдущая версия .
Re: Паттерн строитель
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 19.02.20 01:35
Оценка: 3 (1) +2 -2
Здравствуйте, VVVa, Вы писали:

VVV>А что если у создаваемых классов разное количество и назначение полей и их нужно инициализировать или к примеру неодинаковое количество частей ... ?(интерфейс у этих классов одинаковый)

VVV>Какой-то непаттерн а костыль ...

Практически все шаблоны GoF такие вот недокостыли. На самой начальной стадии смысл имеет GRASP. В конечной стадии шаблоны Enterprise от Мартина Фаулера. Шаблоны GoF по большей части (хоть и не все) повторяют друг друга, что видно по UML диаграммам. Меняют только название шаблона проектирования и роли объектов, а иерархия классов остаётся той же. Вызвали вот такой метод, тогда этот шаблон будет называться так, вызвали другой, тогда назовём иначе. И ладно было бы что-то больше полиморфизма, но нет. Потому если нужны ответы на вопросы про поля, про объекты, про интерфейсы, то лучше читать книгу "Архитектура корпоративных программных приложений" Мартина Фаулера.

А шаблоны GoF это хороший способ провести аналитическую работу над изысканиями банды четырёх. Программист ООП и обобщённой парадигмы программирования может пользоваться GoF интуитивно и это гораздо проще и эффективнее, так как это продвижение от общего к частному. А вот чтобы применить GoF нужно двигаться от частного, к общему, то есть банда четырёх не стала проводить фундаментальные исследования как Мартин Фаулер, просто навыдирала из своих прошлых проектов решений и сунула как есть. Потому там и кажется многое недоделкой, а тот же Адаптер известен как Обёртка задолго до них, или те же Шаблонные методы естественны для шаблонов C++ и на них даже построена стандартная библиотека шаблонов, и это ещё вызов функции через указатель никто не отменял.

В итоге некоторые программисты не советуют новичкам учить GoF, так как смысла в этом случае мало. Более опытные всё равно не будут это использовать в том виде, в каком оно существует. Читал историю возникновения GoF, и это я не для красного словца упомянул, что они выдрали решения из своих старых проектов, что вроде бы логично, но не все понимают, когда сталкиваются не со строгими теориями, а с кусками чего-то. Люди то думают, что для книжки нужно было хоть немного подумать, банда четырёх и подумали, но не над переосмыслением и движении к общему, а какое решение добавить, а какое нет и как их назвать.
Re: Патент строитель
От: LaptevVV Россия  
Дата: 27.04.19 16:27
Оценка: 10 (4)
Вот здесь почитай: https://refactoring.guru/ru/design-patterns/builder
Возможно, более понятно станет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Патент строитель
От: VVVa  
Дата: 27.04.19 17:15
Оценка: 6 (2) -2
Здравствуйте, LaptevVV, Вы писали:

LVV>Вот здесь почитай: https://refactoring.guru/ru/design-patterns/builder

LVV>Возможно, более понятно станет.

Ну и костыль .... заводить под каждый класс строителя и в директоре все случаи описывать ... что за ерунда ...
Re: Патент строитель
От: VVVa  
Дата: 28.04.19 14:38
Оценка: 6 (2) -1
Кажись инициализировать поля другого класса даже через метод плоховато затея противоречит инкопсуляции (скрытии)
Да и друзей в С# вроде убрали
Как вобще такойкостыль могли придумать ?
Re[2]: Патент строитель
От: Gattaka Россия  
Дата: 04.05.19 20:39
Оценка: +1 -1 :)
Здравствуйте, VVVa, Вы писали:

VVV>А какой еще паттерн можно применить, если нужно много полей инициализировать (и одинаковые есть) в родственных классах?

Забей, программирование это не твое. Тут одни костыли везде.
Re: Патент строитель
От: VVVa  
Дата: 28.04.19 14:49
Оценка: 6 (2)
А какой еще паттерн можно применить, если нужно много полей инициализировать (и одинаковые есть) в родственных классах?
Re: Паттерн строитель
От: alexanderfedin США http://alexander-fedin.pixels.com/
Дата: 18.02.20 20:02
Оценка: 3 (1) +1
Здравствуйте, VVVa, Вы писали:

VVV>Читаю и недогоняю https://metanit.com/sharp/patterns/2.5.php

VVV>А что если у создаваемых классов разное количество и назначение полей и их нужно инициализировать или к примеру неодинаковое количество частей ... ?(интерфейс у этих классов одинаковый)
VVV>Какой-то непаттерн а костыль ...
Не утыкайся в один-единственный паттерн. Попробуй совместить.
Например, можно часть строительных блоков загрузить через сериализацию (и потом, возможно, поменять какие-то свойства), часть создать с нуля, часть скопировать (template) и потом все это соединить вместе в финальный объект.
Respectfully,
Alexander Fedin.
Re: Паттерн строитель
От: okon  
Дата: 21.02.20 14:31
Оценка:
Здравствуйте, VVVa, Вы писали:

VVV>Читаю и недогоняю https://metanit.com/sharp/patterns/2.5.php

VVV>А что если у создаваемых классов разное количество и назначение полей и их нужно инициализировать или к примеру неодинаковое количество частей ... ?(интерфейс у этих классов одинаковый)
VVV>Какой-то непаттерн а костыль ...


Посмотри на интерфейс класса StringBuilder в .NET помоему достаточно хороший пример паттерна.
Когда создать нужное состояние объекта в одном конструкторе не удобно или не возможно.
https://docs.microsoft.com/en-us/dotnet/api/system.text.stringbuilder?view=netframework-4.8#methods
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.