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

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

7
Обход правил у волшебников и воинов
В этой серии постов в блоге Эрик Липперт описывает проблему объектно-ориентированного проектирования на примере мастеров и воинов, где: abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } } sealed …

3
Шаблон C # для чистой обработки «свободных функций», избегая статических классов «вспомогательного пакета» в стиле Helper
Недавно я рассматривал несколько статических классов «вспомогательных пакетов» в стиле Хелпера, плавающих вокруг больших кодовых баз C #, с которыми я работаю, в основном, как следующий очень сжатый фрагмент: // Helpers.cs public static class Helpers { public static void DoSomething() {} public static void DoSomethingElse() {} } Конкретные методы, которые …

3
Запись в начале файла того, что вы знаете только в конце
Справочная информация: я пишу код микроконтроллера C для записи файла EBML. EBML похож на двоичный XML с вложенными элементами, но вместо начального и конечного тегов есть начальный идентификатор, длина, а затем данные. Я записываю это во внешнюю флэш-память в приложении с низким энергопотреблением, поэтому я бы хотел, чтобы доступ к …

4
DDD подход к базовым операциям CRUD в сложном доменно-ориентированном приложении
Моя компания переписывает наше веб-приложение с нуля. Это крупное приложение уровня предприятия со сложной областью в финансовой индустрии. Мы используем ORM (Entity Framework) для сохранения. По сути, половина наших приложений сосредоточена на сборе необработанных данных от пользователя, их хранении, а затем другая половина приложения, содержащая большую часть нашей реальной доменной …

1
Бизнес логика против сервисного уровня
Я прочитал этот ответ: https://softwareengineering.stackexchange.com/a/234254/173318, пожалуйста, исправьте мое понимание. Бизнес-правила относятся к списку шагов бизнеса в реальном мире (без кодов). Бизнес-логика относится к процессу преобразования бизнес-правил в коды и к таким группам / видам кодов, которые называются «бизнес-логика». И для чего используется уровень сервиса? если я читаю этот ответ, он …

2
Что делает итератор шаблоном дизайна?
Мне было интересно, что же делает Итератор особенным по сравнению с другими подобными конструкциями, и это заставило Банду Четырех перечислить его как шаблон проектирования. Итератор основан на полиморфизме (иерархия коллекций с общим интерфейсом) и разделении задач (итерации по коллекциям должны быть независимы от структуры данных). Но что, если мы заменим …

4
Как четко определить границы ограниченного контекста
После месяца или около того чтения и исследования DDD я решил начать свой собственный проект и создал DDD с этими ограниченными контекстами> клиенты Товары заказы Billing Каждый ограниченный контекст имеет API покоя в качестве уровня представления, уровня домена, постоянного уровня. Пока все хорошо, код работает гладко, но, исходя из монолитного …

2
Подходит ли схема наблюдателя, когда наблюдатели не зависят друг от друга?
У меня class Carесть 2 свойства: int priceи boolean inStock. Он также держит Listиз abstract class State(пустого класса). Есть 2 состояния, которые могут быть применены к автомобилю, и каждый представлен своим собственным классом: class Upgrade extends Stateи class Shipping extends State. A Carможет содержать любое количество каждого из 2 состояний. …


1
Источник событий только для случаев, когда записи редки?
Я читаю источники событий и не могу перестать задавать себе вопрос, имеет ли это смысл только в экзотических ситуациях, когда записи очень редки или требуется аудит военного уровня. Неисключительная система с любым значительным использованием может производить от сотен до тысяч записей в день, переводя, скажем, в миллион или 2 записи …

8
Проекты и методы для защиты от ошибочных нулевых записей из базы данных
Одна часть моей программы извлекает данные из многих таблиц и столбцов в моей базе данных для обработки. Некоторые из столбцов могут быть null, но в текущем контексте обработки это ошибка. Этого не должно "теоретически" происходить, поэтому, если это так, это указывает на неверные данные или ошибку в коде. Ошибки имеют …

5
Существуют ли существенные недостатки в зависимости от абстракций?
Я читал эту вики о Принципе стабильных абстракций (SAP) . SAP заявляет, что чем стабильнее пакет, тем более абстрактным он должен быть. Это подразумевает, что если пакет менее стабилен (более вероятно, изменится), то он должен быть более конкретным. Что я действительно не понимаю, так это то, почему так должно быть. …

6
Как уменьшить переключатель в операторе switch?
Поэтому я делаю метод для создания линии приветствия на основе двух человек из базы данных. Существует четыре параметра: два имени ( name1и name2) и два пола ( genderи gender2). Для каждой гендерной комбинации у меня есть разные результаты. Например: если пол 1 M(мужчина) и пол 2 также M, результат должен …

4
Как я могу иметь объекты, взаимодействующие и взаимодействующие друг с другом без навязывания иерархии?
Я надеюсь, что эти разговоры прояснят мой вопрос - я бы полностью понял, если они этого не сделают, поэтому дайте мне знать, если это так, и я постараюсь прояснить себя. Познакомьтесь с BoxPong , очень простой игрой, которую я сделал, чтобы познакомиться с разработкой объектно-ориентированных игр. Перетащите коробку, чтобы контролировать …

1
Какова связь между «потоком» и чисто функциональным реактивным программированием?
Насколько я понял, Flux - это метод однонаправленного обращения с потоком данных приложения, который изолирует состояние от остальной части программы в автономных «хранилищах» только для чтения, которые могут изменять свое собственное состояние, слушая «действия», которые испускаются взглядами и отправляются диспетчерами. Или, короче говоря, способ контролировать состояние. Если это правильно, как …

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