Существуют ли шаблоны проектирования, используемые в .NET Framework?
Я хотел бы знать: какие-либо шаблоны дизайна GoF используются в .NET Framework?
BOUNTY:
Я видел ссылку MSDN ниже в ответе. Есть ли сообщение/видео или вы можете перечислить шаблоны и, самое главное, где он используется?
Ответы
Ответ 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