powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Паттерн Builder. Применение в .NET
25 сообщений из 76, страница 1 из 4
Паттерн Builder. Применение в .NET
    #39339740
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто знает конкретные примеры применения паттерна Builder в .NET Framework?
Не самопальные абстрактные "собираем машину", "печём пиццу" и т. п., а применение в самой библиотеке .NET.
Похоже, что при построении запроса в LINQ, что-то подобное используется,
но мне не понятно где там конкретно Builder, ConcretBuilder и Director.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39339773
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NET,
в поделке Сережи Брина забанили?
http://stackoverflow.com/questions/1316743/are-there-any-design-patterns-used-in-the-net-framework
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39339774
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на Builder вот такое сочетание
Builder - System.IO.Stream
ConcretBuilder - System.IO.FileStream
Director - System.IO.StreamWriter

Но тут не совсем ясно, что является продуктом и как его извлечь из Builder.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39339785
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39339789
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETПохоже на Builder вот такое сочетание
Builder - System.IO.Stream
ConcretBuilder - System.IO.FileStream
Director - System.IO.StreamWriter

Но тут не совсем ясно, что является продуктом и как его извлечь из Builder.

Не. Строитель создаёт объект. Конкретный строитель создаёт конкретный объект. Директор использует строитель и не знает какой конкретный строитель используется.

Вот здесь очень хорошо описано:

http://andrey.moveax.ru/post/patterns-oop-creational-builder
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39339797
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NET,

Еще есть модные fluent builder-ы
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39344446
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ.NET,
в поделке Сережи Брина забанили?
http://stackoverflow.com/questions/1316743/are-there-any-design-patterns-used-in-the-net-framework
По этой ссылке в одном из комментариев приводится полезный список
автор
Abstract Factory: System.Data.Common.DbProviderFactory. Every member function of this class is a factory method.
Builder: The WCF channel construction infrastructure.
Factory Method:
System.Data.IDbConnection.BeginTransaction(). The type of transaction created depends on the underlying IDbConnection implementation.
WebRequest.Create() returns a concrete type that depends on the URL scheme.
Prototype - used in framework for cloning and serialization
Singleton - used as an activation method in WCF, i.e. a web service may be treated as a singleton by the WCF infrastructure. Ditto for .NET Remoting.

Structural patterns

Adapter: The ADO.NET providers, eg System.Data.SqlClient.SqlConnection, System.Data.OleDb.OleDbConnection etc. Each provider is an adapter for its specific database.
Composite: many examples
System.Windows.Forms.Control and its derived classes.
System.Web.UI.Control and its derived classes.
System.Xml.XmlNode and its derived classes.
Decorator:
System.Windows.Controls.Decorator (in WPF).
Some implementations of Stream are decorators around an inner stream (e.g. GZipStream, CryptoStream).
Facade: System.Xml.Serialization.XmlSerializer. XmlSerializer hides a complex task (that includes generating assemblies on the fly!) behind a very easy-to-use class.
Proxy: The web service proxies generated by svcutil.exe and deriving from System.ServiceModel.ClientBase<TChannel>

Behavioral Patterns

Chain of responsibility: System.Web.UI.Control.OnBubbleEvent() and System.Web.UI.Control.RaiseBubbleEvent().
Command:System.Windows.Input.ICommand (in WPF).
Interpreter: System.Linq.Expressions.Expression and related classes.
Iterator: many examples
System.Collections.IEnumerable.
System.Collections.Generic.IEnumerable<T>.
System.Data.IDataReader.
Memento: The .NET Serializable pattern is a variation on the Memento pattern.
Observer - The .NET event mechanism.
Strategy - Sort method in ArrayList
Template Method - Render method for custom controls
Visitor : System.Linq.Expressions.ExpressionVisitor


Но тут ничего не говорится по паттерн Bridge.
Есть идеи где применяется Мост в .NET?
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39344530
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДиректор использует строитель и не знает какой конкретный строитель используется. Директор: Так, надо построить кирпичную стену. Эй, ты, будешь кирпичи класть!
Строитель: Я крановщик.
Директор: Ничего не знаю, клади, блеать!


Какой-то сомнительный паттерн.
Или описание.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39344545
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy

Какой-то сомнительный паттерн.
Или описание.
Они почти все сомнительные. Нормальные или встроены в язык (энумератор) или реализованы в виде библиотек (прослушиватель) или часто используются, например из-за отсутствия двойной диспетчерезации (ждем c# 7.0) (посетитель).
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39344548
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Директор: Так, надо построить кирпичную стену. Эй, ты, будешь кирпичи класть!
Строитель: Я крановщик.
Директор: Ничего не знаю, клади, блеать!


Какой-то сомнительный паттерн.
Или описание.

Для России самое то
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39344549
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВОни почти все сомнительные.

Вы просто не умеете их готовить (с)
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39344626
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВот здесь очень хорошо описано:

http://andrey.moveax.ru/post/patterns-oop-creational-builder судя по описанию, этот паттерн нормально применим разве что в setup-проектах, где пошаговость и разнообразность объектов (форм настроек) и составляет суть проекта.

в прочие проекты его впендюривать смысла вообще нет, поскольку трудоемкость реализации объектов в разы превышает разницу между трудоемкостями реализации этого паттерна и какой-нибудь наколенки, решающей задачу пошаговости в лоб. он вообще не сокращает трудозатраты (в сферическом проекте пошаговых процессов раз-два и обчелся), а скорее всего даже увеличивает.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39345015
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyсудя по описанию, этот паттерн нормально применим разве что в setup-проектах, где пошаговость и разнообразность объектов (форм настроек) и составляет суть проекта.

в прочие проекты его впендюривать смысла вообще нет, поскольку трудоемкость реализации объектов в разы превышает разницу между трудоемкостями реализации этого паттерна и какой-нибудь наколенки, решающей задачу пошаговости в лоб. он вообще не сокращает трудозатраты (в сферическом проекте пошаговых процессов раз-два и обчелся), а скорее всего даже увеличивает.

ЭЭмм.. Я не понимаю смысла «впендюривать», зачем что-то куда-то впендюривать? Паттерны придуманы не для того, чтобы их впендюривали или использовали только потому, что они есть. Они решают задачи. Трудозатраты они сокращают в том смысле, что ты не выдумываешь решение, а применяешь его. И другие люди, которые придут на проект, сразу поймут что это и как это работает, так как с паттернами все знакомы.

Строитель не редко используется в грамотно спроектированной системе.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39345855
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВОни почти все сомнительные.

Вы просто не умеете их готовить (с)
Приведи 3 примера использования тобой паттернов в продакшене?
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39345919
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПриведи 3 примера использования тобой паттернов в продакшене?

Универсальные:

1. Отправка уведомлений IMessageBuilder, конкретный билдер зависит от настроек, это может быть email, push, sms, запись в лог, что угодно.

2. Создание документов IDocumentCreator, конкретный билдер зависит от мета-типа, и его настроек во внутренней системе документно-реестрового учёта.

Из предметно-конкретных:

3. Создание электронного паспорта энергетического обследования для выгрузки, валидации и передачи его третей стороне IEnergyPassportBuilder. Конкретный билдер зависит от версии паспорта и типа требуемого результата.

Просил 3, получи. На деле их намного больше. Да, не все паттерны одинаково популярны, но совсем бесполезных нет, вы просто не умеете их готовить.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39345924
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyрешающей задачу пошаговости

Вот кстати один из камней преткновения, затрудняющий понимание паттерна. Конструирование объекта может представлять собой процесс более сложный, чем установка значений свойств. И это отличная точка безболезненного расширения и оптимизации, которую многие не понимают, или понимают не до конца.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39345949
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Более подробно можно хоть 1 пример? А то на первый взгляд ты натягивал голошу на тыкву....
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39345971
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVostt,
Более подробно можно хоть 1 пример? А то на первый взгляд ты натягивал голошу на тыкву....


Ты спросил про 3 примера использования в продакшене, я ответил. Что теперь тебя смущает? Можешь пояснить свою мысль? А то у нас дискуссия в одни ворота получается по принципу "не ве-е-рю!". Давай как-то конструктивней что ли.

Подробные примеры можно легко найти в опен сорсе, например, в Quartz этот паттерн активно применяется.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39346056
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Директор: Так, надо построить кирпичную стену. Эй, ты, будешь кирпичи класть!
Строитель: Я крановщик.
Директор: Ничего не знаю, клади, блеать!

как раз директор не знает из чего конкретная стена будет строиться, о кирпичах он ничего не знает.
не получится крановщика прислать вместо каменщика - интерфейсы несовместимы
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39346125
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

Директор ещё не знает какой национальности будет строитель
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39346173
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИзопропил,

Директор ещё не знает какой национальности будет строитель
и не должен узнать даже в процессе строттельства
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39347304
Фотография Смузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПодробные примеры можно легко найти в опен сорсе, например, в Quartz этот паттерн активно применяется.
Больше фундаментализма - Entity Framework, NHibernate.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39347625
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СмузиhVosttПодробные примеры можно легко найти в опен сорсе, например, в Quartz этот паттерн активно применяется.
Больше фундаментализма - Entity Framework, NHibernate.

Примеры можно приводить бесконечно, даже если очень захочется, отказаться от применения этого паттерна будет сложно. Зачастую толпы программистов даже понятия не имеют, что применяют тот или иной паттерн. Проблема возникает, когда программист начинает на паттерны смотреть под углом «А как же мне его применить и впендючить в проект, это должно быть очень круто?!» :)
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39347628
Фотография Смузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПроблема возникает, когда программист начинает на паттерны смотреть под углом «А как же мне его применить и впендючить в проект, это должно быть очень круто?!» :)
Что касается данного паттерна, для себя сделал вывод - удел фреймворков и прочих коробок. Флюент упрощает разобраться в хаосе настроек. В качестве прикладного подхода несъедобно и, возможно, вредно.
...
Рейтинг: 0 / 0
Паттерн Builder. Применение в .NET
    #39347655
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СмузиЧто касается данного паттерна, для себя сделал вывод - удел фреймворков и прочих коробок. Флюент упрощает разобраться в хаосе настроек. В качестве прикладного подхода несъедобно и, возможно, вредно.

Если не очень сложно, можешь пояснить на основе чего сделаны такие выводы?

Второй вопрос, если:

— создание объекта сложнее, чем параметры его конструктора
— создание объекта требует доступа к некоторым зависимостям, которых не должно быть непосредственно у Директора
— код, который создаёт объект (Директор), не знает какой конкретно объект он создаёт (знает только базовый тип) и знает параметры, нужные для его создания
— создание объекта может иметь сложные эффекты (например, создание объекта провоцирует создание также других объектов, необходимых для дальнейшей его жизнедеятельности)
— создание объекта может провалиться из-за нарушения бизнес-правил, но это не является исключительной ситуацией
— создание объекта подразумевает предварительно наполнение данными (самый яркий пример — заказ, это объект, но у него может быть большое количество товаров, подключенные программы лояльности, после создания заказ остаётся неизменным до конца жизни)

как будешь выкручиваться?

Мне кажется, я могу ещё раз повторить, вы просто не умеете его готовить
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 1 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Паттерн Builder. Применение в .NET
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]