Вопросы с тегом «design-patterns»

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

4
Как меняется мышление о шаблонах проектирования и методах ООП в динамических и слабо типизированных языках?
В этом отношении уже есть довольно полезный вопрос (« Шаблоны проектирования без ООП? »), Но мне более любопытна переходная точка зрения для человека, только начинающего работать с динамическими и слабо типизированными языками. То есть: скажем, я программировал на C ++, C # или Java в течение многих лет и впитал …

5
Модифицированный шаблон дизайна стратегии
Я недавно начал изучать шаблоны проектирования, и одна вещь, которую я кодирую, идеально подошла бы к шаблону стратегии, за исключением одного небольшого различия. По сути, некоторые (но не все) из моих алгоритмов нуждаются в дополнительном параметре или двух передаваемых им. Так что мне либо нужно передать им дополнительный параметр, когда …

2
Статический метод создания - плюсы и минусы по сравнению с конструкторами
Каковы плюсы и минусы использования статических методов создания объектов над конструкторами? class Foo { private Foo(object arg) { } public static Foo Create(object arg) { if (!ValidateParam(arg)) { return null; } return new Foo(arg); } } Мало, что я могу думать о: Плюсы: Возврат null вместо выдачи исключения (назовите его …

4
Как мне обернуть сервис, чтобы он был проще
У нас есть зависимость от стороннего сервиса, который предоставляет гигантский интерфейс, который нам нужен только как 3 метода. Кроме того, интерфейс часто меняется ... Я решил обернуть интерфейс в класс в нашем проекте и раскрыть только те методы, которые нам нужны. Но я не уверен, как я должен обрабатывать возвращаемые …

2
Уровень приложений, вызывающий функции базы данных. Плохая архитектура?
Сценарий: Стек: Java, Spring, Hibernate. Модель: клиент-серверное приложение. Шаблон: Модель-Вид-Контроллер (MVC). Классы Service Layer имеют три поведения: Некоторые сервисы имеют бизнес-правило внутри методов и делегируют постоянство приложению. Подобно: EntityManager.save (юридическое лицо); Некоторые сервисы просто вызывают функцию базы данных (передавая параметры) CallableStatement cls = con.prepareCall ("{call databaseFunction (args)}"); Некоторые сервисы имеют …

1
Как инверсия контроля связана с инверсией зависимости
Во многих статьях по всему миру термины «Инверсия управления» и «Принцип инверсии зависимостей», похоже, перепутаны и используются как синонимы (дальнейшая путаница обеспечивается инструментами, которые называются «DI-контейнеры» и «IoC-контейнеры»). Статья в Википедии делает хорошую работу, пытаясь объяснить, что IoC - это не то же самое, что DI: Инверсия управления (IoC) описывает …

4
Сокращение шаблонов в классе, который реализует интерфейсы посредством композиции
У меня есть класс: Aэто состав из нескольких меньших классов B, Cи D. B, CИ Dреализовывать интерфейсы IB, ICи IDсоответственно. Так как Aподдерживает все функциональные возможности B, Cи D, Aреализует IB, ICи IDтакже, но это, к сожалению, приводит к большой перенаправления в реализацииA Вот так: interface IB { int Foo …

2
Архитектура проекта .NET MVC / многоуровневая структура
При планировании архитектуры для средне-масштабного веб-приложения MVC, как вы реализуете слои, чтобы они были максимально разделены и легко тестировались? (в основном следуйте рекомендациям) Допустим, я сначала использую код для доступа к данным. Я борюсь с тем, как определить «бизнес-логику», и как она предназначена для взаимодействия с уровнем данных. Если взять …

6
Каковы практические способы реализации SRP?
Просто какие практические методы люди используют, чтобы проверить, нарушает ли класс принцип единственной ответственности? Я знаю, что у класса должна быть только одна причина для изменения, но этому предложению не хватает практического способа действительно реализовать это. Единственный способ, который я нашел, - это использовать предложение "......... должен ......... сам". где …

1
ООП ECS против чистого ECS
Во-первых, я знаю, что этот вопрос связан с темой разработки игр, но я решил задать его здесь, поскольку он действительно сводится к более общей проблеме разработки программного обеспечения. В прошлом месяце я много читал о Entity-Component-Systems, и теперь я вполне доволен этой концепцией. Тем не менее, есть один аспект, который, …

4
Шаблон Дублирования Класса?
В настоящее время я работаю сольным разработчиком над моим текущим проектом. Я унаследовал проект от другого разработчика, который с тех пор покинул компанию. Это веб-приложение в стиле модель-вид-контроллер в C #. Он использует Entity Framework для реляционного отображения объектов. И есть два разных набора классов для типов в модели предметной …

5
Лучший шаблон проектирования ООП для последовательности операций
Я работаю над приложением, модуль которого последовательно выполняет следующие финансовые операции: Когда пользователь запрашивает перевод определенной суммы на свой банковский счет: проверить, может ли какая-либо транзакция произойти сейчас? (транзакция может быть осуществлена ​​только в течение определенного периода времени) проверьте, запросил ли пользователь минимальную сумму для снятия проверьте, есть ли у …

4
Как использовать Inpendency Injection в сочетании с шаблоном Factory
Рассмотрим модуль, который отвечает за синтаксический анализ файлов любого типа. Я думаю об использовании паттерна стратегии для решения этой проблемы, как я уже объяснил здесь . Пожалуйста, обратитесь к связанному посту, прежде чем продолжить этот вопрос. Рассмотрим класс B, которому нужно содержимое файла product.xml. Этот класс должен будет создать экземпляр …

1
Статья Питера Норвига, цитируемая Бренданом Эйхом
Я читаю Coders at Work, а Брендан Айх цитирует статью Norvig, написанную еще в то время, когда он был в Арлекине, «о том, как шаблоны проектирования действительно являются недостатками в вашем языке программирования». Кто-нибудь может предоставить ссылку на этот документ?

5
Можем ли мы полностью заменить наследование, используя шаблон стратегии и внедрение зависимостей?
Например: var duckBehaviors = new Duckbehavior(); duckBehaviors.quackBehavior = new Quack(); duckBehaviors.flyBehavior = new FlyWithWings(); Duck mallardDuck = new Duck(DuckTypes.MallardDuck, duckBehaviors) Поскольку класс Duck содержит все типы поведения (абстрактные), создание нового класса MallardDuck(который расширяется Duck), по-видимому, не требуется. Ссылка: Head First Design Pattern, глава 1.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.