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

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

26
задан Peter Mortensen 24 January 2010 в 09:55
поделиться

6 ответов

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

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 также используют шаблон стратегии.

Шаблон фабрики используется в нескольких местах, и вот здесь образец, в котором он используется в 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 framework. Где не совсем легко ответить, поскольку фреймворк огромен, и если MS не публикует как таковые, перечисленные в некоторых из приведенных примеров, это не всегда очевидно. Чем более знакомо шаблон, тем больше вероятность, что вы заметите класс фреймворка, который его использовал.

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

Кроме того, http: //www.dofactory .com / Framework / Framework.aspx продается комплект ($ 79-99), в котором рассказывается, как использовать / реализовывать шаблоны GoF в.

23
ответ дан 28 November 2019 в 06:24
поделиться

Методы BeginXXX и EndXXX в BCL частично основаны на шаблоне Asynchronous Completion Token .

0
ответ дан 28 November 2019 в 06:24
поделиться

Определенно. Например, Заводской шаблон используется в классах поставщиков данных ADO.NET. Шаблон Singleton используется в удаленном взаимодействии .NET. Шаблон удаления используется в управлении ресурсами.

4
ответ дан 28 November 2019 в 06:24
поделиться

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

6
ответ дан 28 November 2019 в 06:24
поделиться
  • System.Net.WebClient - это пример шаблона фасада.
  • System.IO.Stream: классический асинхронный шаблон
  • System.ComponentModel.BackgroundWorker: асинхронный шаблон на основе событий
  • Как уже упоминалось: шаблон Dispose используется почти везде во фреймворке
  • System.Control: Шаблон метода шаблона
0
ответ дан 28 November 2019 в 06:24
поделиться

Платформа .NET использует множество шаблонов «Банды четырех». Вот лишь несколько примеров:

Шаблоны создания

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

Структурные шаблоны

  • Адаптер : поставщики ADO.NET, например System.Data.SqlClient.SqlConnection , System.Data.OleDb.OleDbConnection и т. Д. Каждый провайдер является адаптером для своей конкретной базы данных.
  • Composite : много примеров
    • 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 и производные от системы . ServiceModel.ClientBase

Поведенческие шаблоны

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

Похожие вопросы: