Подтвердить что ты не робот

Существуют ли шаблоны проектирования, используемые в .NET Framework?

Я хотел бы знать: какие-либо шаблоны дизайна GoF используются в .NET Framework?

BOUNTY:

Я видел ссылку MSDN ниже в ответе. Есть ли сообщение/видео или вы можете перечислить шаблоны и, самое главное, где он используется?

4b9b3361

Ответ 1

Вот статья, в которой обсуждается эта тема:

http://msdn.microsoft.com/en-us/magazine/cc188707.aspx

И теперь шаблон MVC можно добавить с помощью ASP.NET MVC.:)

РЕДАКТИРОВАТЬ: Поскольку ваше редактирование/запрос для получения дополнительной информации:

Вот статья, в которой перечислены несколько шаблонов и где они используются в рамках. http://www.jot.fm/issues/issue_2006_11/article1.pdf

Провайдеры в .NET - все модели модели поставщика. http://msdn.microsoft.com/en-us/library/aa479030.aspx

В шаблонах поставщиков в .NET также используется шаблон стратегии.

Шаблон factory используется в нескольких местах и ​​здесь образец, в котором он использовался в ASP.NET. http://msdn.microsoft.com/en-us/library/ms954600.aspx

Здесь веб-трансляция DP в .NET: http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&EventID=1032293567&CountryCode=US

Я не смотрел его, поэтому я не уверен, насколько это важно в том, как они используются в Framework...

Как уже упоминалось в комментарии, шаблоны GoF, вероятно, все используются в платформе .NET. Где не совсем проще ответить, поскольку структура является массивной, и если MS не публикует такие данные, перечисленные в некоторых из приведенных примеров, это не всегда очевидно. Более знакомый с шаблоном, тем более вероятно, что вы заметили класс framework, который его использовал.

Надеюсь, дополнительные ссылки, которые я добавил, помогут вам.

Кроме того, http://www.dofactory.com/Framework/Framework.aspx содержит комплект для продажи ($ 79-99), который посвящен обучению использованию/внедрению шаблонов GoF. NET, но они делают список при чтении, они также объяснят, где MS использует их в Framework.

Ответ 2

.NET Framework использует многие шаблоны Gang of Four. Вот несколько примеров:

Творческие образцы

  • Абстрактная фабрика: System.Data.Common.DbProviderFactory. Каждая функция-член этого класса является фабричным методом.
  • Строитель: Инфраструктура строительства канала WCF.
  • Заводской метод:
    • System.Data.IDbConnection.BeginTransaction(). Тип создаваемой транзакции зависит от базовой реализации IDbConnection.
    • WebRequest.Create() возвращает конкретный тип, который зависит от схемы URL.
  • Прототип - используется в рамках для клонирования и сериализации
  • Singleton - используется как метод активации в WCF, т.е. Веб-служба может рассматриваться инфраструктурой WCF как одноэлементная. То же самое для.NET Remoting.

Структурные узоры

  • Адаптер: провайдеры ADO.NET, например, System.Data.SqlClient.SqlConnection, System.Data.OleDb.OleDbConnection и т.д. Каждый провайдер является адаптером для своей конкретной базы данных.
  • Композит: много примеров
    • System.Windows.Forms.Control и его производные классы.
    • System.Web.UI.Control и его производные классы.
    • System.Xml.XmlNode и его производные классы.
  • Декоратор:
    • System.Windows.Controls.Decorator (в WPF).
    • Некоторые реализации Stream являются декораторами внутреннего потока (например, GZipStream, CryptoStream).
  • Фасад: System.Xml.Serialization.XmlSerializer. XmlSerializer скрывает сложную задачу (которая включает генерацию сборок на лету!) За очень простым в использовании классом.
  • Прокси- сервер: прокси-серверы веб-службы, созданные с помощью svcutil.exe и производные от System.ServiceModel.ClientBase<TChannel>

Поведенческие образцы

  • Цепочка ответственности: System.Web.UI.Control.OnBubbleEvent() и System.Web.UI.Control.RaiseBubbleEvent().
  • Команда: System.Windows.Input.ICommand (в WPF).
  • Интерпретатор: System.Linq.Expressions.Expression и связанные классы.
  • Итератор: много примеров
    • System.Collections.IEnumerable.
    • System.Collections.Generic.IEnumerable<T>.
    • System.Data.IDataReader.
  • Memento: шаблон.NET Serializable - это вариант шаблона Memento.
  • Observer - механизм событий.NET.
  • Стратегия - метод сортировки в ArrayList
  • Метод шаблона - метод визуализации для пользовательских элементов управления
  • Посетитель: System.Linq.Expressions.ExpressionVisitor (используется внутри [LINQ])

Ответ 3

Прочтите "Руководство по разработке рамок: соглашения, идиомы и шаблоны для многоразовых библиотек .NET". Эта книга покажет вам реальные шаблоны проектирования, на которых основывалась .NET.

Ответ 4

Конечно. Например, шаблон Factory используется в классах поставщика данных ADO.NET. Шаблон Singleton используется в удалении .NET. Dispose pattern используется в управлении ресурсами.

Ответ 5

Методы BeginXXX и EndXXX в BCL основаны на шаблоне токена асинхронного завершения.

Ответ 6

  • System.Net.WebClient - пример шаблона фасада.
  • System.IO.Stream: классический асинхронный шаблон
  • System.ComponentModel.BackgroundWorker: шаблон Async на основе событий
  • Как уже упоминалось: Dispose pattern используется почти везде в рамках
  • System.Control: шаблон шаблона

Ответ 7

Да, в.Net Framework BCL используется много шаблонов проектирования. На самом деле это лучшее место для изучения использования шаблонов проектирования в перспективе.

Шаблон: Реализация

Шаблон наблюдателя: реализован в виде событий и делегатов

Шаблон декоратора: реализован в классах System.IO Stream

Шаблон итератора: IEnumerable & Iterator

Шаблон стратегии: Реализован в экспериментальных запросах от Linq до Lambda (list.Where (выражение))

Шаблон фабрики: в System.Net.WebRequest

Шаблон адаптера: TLB Import/RCW (обертываемые оболочки во время выполнения)

Пожалуйста, проверьте это видео для подробной презентации по этой теме.

https://www.youtube.com/watch?v=riHGGYHVoaQ&list=PL2_Cl8E2bG36PGuBGesHFPVM1s6M02JmN