background preloader

OOP Patterns

Facebook Twitter

Services in Domain-Driven Design (DDD) - Lev Gorodinski. [Перевод] Анемичная модель предметной области — не анти-шаблон, а архитектура по принципам SOLID / Хабрахабр. От переводчика: На проекте, где я работаю, сейчас идет активное переписывание логики, ранее реализованной в виде богатой модели предметной области (с использованием Active Record и Unit of Work).

[Перевод] Анемичная модель предметной области — не анти-шаблон, а архитектура по принципам SOLID / Хабрахабр

Новый подход включает в себя классы сущностей без поведения и служб без состояния, взаимодействующих посредством интерфейсов — фактически, он представляет собой анемичную модель, с перспективой перехода в дальнейшем на микросервисную архитектуру. Наблюдая в режиме реального времени, как «макаронный монстр» из примерно полутора миллионов LOC постепенно обретает форму, как упрощаются тестирование, масштабирование и кастомизация системы под нуждый различных заказчиков, я был весьма удивлен, узнав, что такой подход часто рассматривается как архитектурный анти-шаблон.

Пытаясь разобраться в причинах этого, я наткнулся на данную статью и размещаю здесь ее перевод, чтобы обсудить с сообществом плюсы и минусы подхода. Создание архитектуры программы или как проектировать табуретку / Хабрахабр. Domain services vs Application services - Enterprise Craftsmanship. In this post, we’ll take a look at domain services: what differs them from application services and when it is preferable to use one in addition to an application service.

Domain services vs Application services - Enterprise Craftsmanship

Domain services vs Application services It is often said that domain services carry domain knowledge that doesn’t naturally fit entities and value objects. Книги по дизайну и ООП. Чтобы стать хорошим программистом нужно одолеть пару книг по алгоритмам, еще парочку по принципам кодирования, пару книг по языку программирования, ну и что-то по фреймворку, которым вы собираетесь пользоваться.

Книги по дизайну и ООП

Но как насчет навыков проектирования? Как научиться борьбе со сложностью, как принимать правильные технические решения в краткосрочной и долгосрочной перспективе, как понять, когда стоит, а когда не стоит применять паттерны или принципы проектирования? Как научиться не злоупотреблять наследованием и вообще совмещать различные парадигмы проектирования? Невозможно стать хорошим архитектором прочитав несколько книг, поскольку нужно четко понимать, как конкретное теоретическое решение отражается в реальных системах. Учимся проектировать на основе предметной области (DDD: Domain Driven Design)

1.

Учимся проектировать на основе предметной области (DDD: Domain Driven Design)

Введение В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design). 2. Так почему же DDD? Untitled. Вильямс книга Адаптивный код на C#: проектирование классов и интерфейсов, шаблоны и принципы SOLID.

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

Вильямс книга Адаптивный код на C#: проектирование классов и интерфейсов, шаблоны и принципы SOLID

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

Книга рассчитана на читателей, имеющих опыт программирования на C# в ИСР Visual Studio и на платформе .NET Framework, а также стимулы к гибкой разработке адаптивного кода. Уровни абстракций — ключ к пониманию архитектурных изысков ПО. Эта статья будет в большей степени полезна новичкам, только начинающим работать с абстракциями и построением архитектур ПО.

Уровни абстракций — ключ к пониманию архитектурных изысков ПО

Однако искренне надеюсь, что и более опытные специалисты смогут найти для себя что-то интересное в этом материале. Абстракция — один из набивших оскомину столпов ООП. В любом курсе по программированию с вероятностью 99% можно найти урок-другой, посвященный теме абстракции. И практически всегда упускается более широкое, всеобъемлющее понятие «уровней абстракции» — на мой взгляд, критически важное, ключевое для понимания всех остальных принципов проектирования. Модель объекта и ступень приближения Абстракция — это модель некоего объекта или явления реального мира, откидывающая незначительные детали, не играющие существенной роли в данном приближении. Чтобы не вдаваться в многоэтажную теорию, приведу наглядный пример. «Чтобы испечь яблочный пирог, нам понадобится два килограмма непременно свежих яблок, румяных, как девичьи щёки на крещенском морозе.

Интерфейсы vs. классы. .NET Design Patterns in C# and VB.NET - Gang of Four (GOF) - doFactory.com. Design patterns are solutions to software design problems you find again and again in real-world application development.

.NET Design Patterns in C# and VB.NET - Gang of Four (GOF) - doFactory.com

Patterns are about reusable designs and interactions of objects. The 23 Gang of Four (GoF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: Creational, Structural, and Behavioral (for a complete list see below). To give you a head start, the C# source code for each pattern is provided in 2 forms: structural and real-world. Structural code uses type names as defined in the pattern definition and UML diagrams. A third form, .NET optimized, demonstrates design patterns that fully exploit built-in .NET 4.5 features, such as, generics, attributes, delegates, reflection, and more.

Фабрика - Паттерн разработки. Определение Фабрика- это способ создания объекта одного из нескольких возможных классов, основываясь на представленных данных.

Фабрика - Паттерн разработки

Обычно возможные классы наследуют один общий класс либо реализуют общий интерфейс и различаются между собой реализацией. Классическая схема фабричного метода представлена выше. Здесь Х - базовый класс, а может быть даже интерфейс. Классы XY и XZ по-разному реализуют интерфейс Х.