Как связаны ООП и шаблоны проектирования?

Не являются ли шаблоны проектирования расширением принципов ООП? Почему эти две концепции рассматриваются отдельно? Можем ли мы поверить, что если кто-то, кто знает Design Patterns, определенно будет экспертом ООП?

Ответ 1

A Design Pattern - это проверенное и проверенное решение общей проблемы программирования. Это необязательно должно быть проблемой объектно-ориентированного программирования, но это наиболее распространено в наши дни.

Обучение программированию не сложно для многих людей. Это похоже на игру с Legos: есть несколько разных частей, которые вы можете собрать, но вы хотите. Иногда вы делаете что-то классное, но большую часть времени вы делаете дерьмо =). Обычно, чем дольше вы играете, тем лучше вы получаете.

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

Почему шаблоны проектирования и ООП рассматриваются отдельно?. Потому что это разные темы. В общем, вы учитесь программировать, тогда вы научитесь думать о программировании. Мне жаль, что это было наоборот, но я не задерживаю дыхание.

Кто-нибудь, кто знает, что шаблоны проектирования обязательно являются экспертом ООП? Нет.

Ответ 2

Объектно-ориентированное программирование = Кулинария
Шаблоны = Рецепты

Ответ 3

Не являются ли шаблоны проектирования расширением принципов ООП? Почему эти две концепции рассматриваются отдельно?

"Шаблоны проектирования" относятся к принципам ООП в основном из-за исторической аварии.

Я достаточно уверен, что злоумышленники ML говорили о сводах алгебраических типов данных задолго до книги GoF. Это проверенное решение общей проблемы: вы хотите вычислить одно значение, основанное на содержании некоторого типа алгебраического типа. Аналогично для map, я рисую.

Я думаю, что общая (мета-практика) обнаружения и кодирования шаблонов решений довольно старая - разве это не означает, что "лучшие практики" - это все?

Я объясняю причину, по которой DP и ООП рассматриваются отдельно, потому что, хотя они перекрываются, можно было бы подумать, что лучшие практики ООП имеют какое-то отношение к принципам ООП - есть определенная независимость: имеет смысл говорить о дизайне шаблонов в настройках, отличных от OO.

Ответ 4

Шаблоны проектирования и объектно-ориентированное программирование не обязательно связаны. Так получилось, что большое количество шаблонов проектирования связано с объектно-ориентированным программированием.

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

Ситуация похожа на диаграмму Венна - подходы не против, но они не идентичны, и они действуют на несколько разных логических уровнях.

Ответ 5

Концепция шаблонов и Anti Patterns применяется также к доменам, не связанным с программированием.

Ответ 6

Я думаю, вы должны забрать любую книгу шаблонов дизайна и прочитать введение. Как только вы получите шаблон дизайна, вы получите ответ на этот вопрос.

Ответ 7

Вы могли бы рассматривать объектно-ориентированное программирование шаблон проектирования самостоятельно.

Ответ 8

Объектно-ориентированное программирование само по себе является шаблоном проектирования.

Ответ 9

Шаблоны проектирования - это общие подходы к решению проблем, возникающих при программировании ООП. Знание о шаблонах проектирования может сэкономить некоторое время при определении того, как подойти к ситуации.

Некоторые шаблоны проектирования позволяют делать вещи, которые в противном случае были бы невозможны или сложны, например шаблон посетителя, который позволяет набор классов получить новую функциональность, не зная об изменениях. Используя обычные методы ООП, можно было бы создать интерфейс или виртуальные методы, реализуемые каждым классом. Что идет против OOP принцип открытия/закрытия.

Я бы не зашел так далеко, чтобы сказать, что кто-то, кто знает шаблоны дизайна, является экспертом OOP, хотя.

Программисты используют шаблоны все время, не изучая их, поскольку они широко используются в инфраструктурах Java и .NET. Большая часть пространства имен Java IO состоит из классов, использующих шаблон Decorator. Зная, что это не делает кого-то более или менее экспертом в ООП, но это может помочь понять смысл.

Ответ 10

По правде говоря, шаблоны проектирования и ООП действительно не имеют ничего общего друг с другом. Они, как их называют, используют шаблоны (или "рецепты" ) для реализации дизайна. Существуют "шаблоны проектирования" практически для любого языка, на котором вы будете работать, но бывает, что книга "Банда четырех" фокусируется на шаблонах проектирования OO.

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

Так что, как и книга рецептов, не делает одного шеф-повара мастером, знание OO Design Patterns, не обязательно делает одного эксперта OO.

Ответ 11

Объектно-ориентированное программирование - это методология программирования или концепция программирования, которая организует код в объекты и отношения объектов. Шаблоны проектирования предполагают проверенные методы построения типов/объектов для решения определенного сценария в программе.

Это ограниченное определение.

Ответ 12

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

Ответ 13

Не являются шаблонами проектирования расширения для принципов ООП. Я думаю, что ответ должен быть НЕТ

Почему шаблоны проектирования и ООП рассматриваются отдельно?

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

Для тех, кто этого не знает, SOLID является аббревиатурой для первого 5 принципов объектно-ориентированного проектирования:

  • Принцип единой ответственности
  • Открытый закрытый принцип
  • Принцип замены Лискова
  • Принцип сегрегации интерфейса
  • Принцип инверсии зависимостей

Где Шаблон дизайна - многое о том, как вы хотите определить/поддерживать стандарт кодирования в приложении. Как упростить поток выполнения приложений стандартным способом, чтобы он мог легко поддерживать..

В приведенном ниже примере.. определен один шаблон дизайна.. речь идет о том, как каждый разработчик должен создать объект.

//Register 
builder.RegisterType<ConsoleOutput>().As<IOutput>();                         
builder.RegisterType<TodayWriter>().As<IDateWriter>();
Container = builder.Build();

//Create instance
var writer1 = Container.Resolve<IOutput>();                
writer1.Write("HelloWorld"); 

var writer2 = Container.Resolve<IDateWriter>();               
writer2.WriteDate();

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

Итак, теперь может быть совершенно ясно, что шаблоны проектирования и ООП very different aspect

Можем ли мы поверить, что если кто-то, кто знает Design Patterns, определенно будет экспертом ООП? - ожидается, что... но не обязательно!!

Ответ 14

Шаблоны проектирования - это повторно используемые решения, которые решают проблемы, с которыми разработчики программного обеспечения сталкиваются снова и снова. Вместо того, чтобы изобретать велосипед, узнайте, как использовать эти проверенные и проверенные шаблоны, которые сделают ваше программное обеспечение более гибким и устойчивым к изменениям.