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

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

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

4
Параллельные иерархии - частично одинаковые, частично разные
Есть довольно много подобных вопросов там 1 ,2 ,3 ,4 , но в этом вопросе, похоже, не совсем так, и решения не кажутся оптимальными. Это общий вопрос ООП, предполагая, что полиморфизм, дженерики и миксины доступны. Фактический язык, который нужно использовать - это OOP Javascript (Typescript), но это та же проблема …

3
Глобальный контекст запроса - анти-паттерн?
Я говорил сегодня с моим коллегой о веб-фреймворках Python и наших впечатлениях о них. Я сказал ему, что думаю, что у Flask глобальный запрос плохо пахнет и это анти-паттерн. В документах говорят о контексте запроса: Напротив, во время обработки запроса существует пара других правил: пока запрос активен, локальные объекты контекста …

1
Использование шаблона посетителя с большой иерархией объектов
контекст Я использовал с иерархией объектов (дерево выражений) «псевдо» шаблон посетителя (псевдо, так как в нем не используется двойная диспетчеризация): public interface MyInterface { void Accept(SomeClass operationClass); } public class MyImpl : MyInterface { public void Accept(SomeClass operationClass) { operationClass.DoSomething(); operationClass.DoSomethingElse(); // ... and so on ... } } Этот …

3
Как вы подходите к дизайну классов в ООП?
Когда я пытаюсь разработать OO-решение, я обычно использую моделирование CRC, в котором я перечисляю имена классов (существительные), что они делают (глаголы) и как они взаимодействуют с другими классами. Этот блог имеет следующее, что можно сказать об этом подходе существительное-глагол ...This approach, which I will call “noun and verb,” is so …

5
Используете ли вы преимущества принципа открытого-закрытого?
Принцип открытого-закрытого (OCP) гласит, что объект должен быть открыт для расширения, но закрыт для модификации. Я полагаю, что понимаю это и использую это вместе с SRP для создания классов, которые делают только одно. И я пытаюсь создать много небольших методов, которые позволяют извлечь все элементы управления поведением в методы, которые …

5
Подводные камни доменного дизайна с Entity Framework
Многие учебники по DDD, которые я изучал, в основном охватывают теорию. Все они имеют примеры элементарного кода (Pluralsight и аналогичные). В Интернете также предпринимаются попытки нескольких людей создать учебники по DDD с EF. Если вы начнете их изучать ненадолго - вы быстро заметите, что они сильно отличаются друг от друга. …

4
MVC и RESTful API сервис
MVC довольно прост. Есть Модель, Контроллер и Вид. Когда мы создаем веб-сайт, все это объединяется, когда клиент отправляет запрос ключевого слова REST на сервер -> сервер сопоставляет запрошенный URL с действием контроллера -> который затем вызывает модель (ы) для сбора / обработки данных, получает результат -> и возвращает результат обратно …

2
Разве Entity-Component System ужасна для развязки / сокрытия информации?
Название намеренно гиперболично, и это может быть просто моя неопытность с шаблоном, но вот мои рассуждения: «Обычный» или, возможно, простой способ реализации сущностей состоит в том, чтобы реализовать их как объекты и создать подклассы общего поведения. Это приводит к классической проблеме «является EvilTreeподклассом Treeили Enemy?». Если мы разрешаем множественное наследование, …

5
Шаблон подсчета ссылок для языков с управлением памятью?
Java и .NET имеют замечательные сборщики мусора, которые управляют памятью, и удобные шаблоны для быстрого освобождения внешних объектов ( Closeable, IDisposable), но только если они принадлежат одному объекту. В некоторых системах ресурс может потребляться независимо двумя компонентами и освобождаться только тогда, когда оба компонента освобождают ресурс. В современном C ++ …

3
Как выполнить проверку входных данных без исключений или избыточности
Когда я пытаюсь создать интерфейс для конкретной программы, я обычно стараюсь избегать исключений, которые зависят от неподтвержденного ввода. Поэтому часто случается так, что я думаю о таком фрагменте кода (это просто пример ради примера, не обращайте внимания на функцию, которую он выполняет, пример в Java): public static String padToEvenOriginal(int evenSize, …

2
Отделение бизнес-логики от DB-логики с транзакциями
У нас есть три слоя в нашем приложении. Сервисный уровень для предоставления внешнего API. Уровень BO для нашей бизнес-логики и уровень DAO для нашего соединения с базой данных. Допустим, каждый раз, когда мы обновляем файл, мы также хотим что-то изменить в папке, например, «дата последнего изменения». Это должно быть сделано …

7
Реализация состояния объекта на ОО языке?
Мне дали посмотреть на Java-код, который имитирует гонку автомобиля, включая реализацию базового автомата. Это не классическая машина состояний компьютерных наук, а просто объект, который может иметь несколько состояний и может переключаться между его состояниями на основе серии вычислений. Чтобы описать только проблему, у меня есть класс Car с вложенным классом …

2
СУХОЙ принцип в хороших практиках?
Я стараюсь следовать принципу СУХОЙ в своем программировании изо всех сил. Недавно я изучал шаблоны проектирования в ООП и закончил тем, что повторял себя довольно много. Я создал шаблон Repository вместе с шаблонами Factory и Gateway, чтобы справиться с моим постоянством. Я использую базу данных в своем приложении, но это …

5
Отдельный интерфейс для методов мутации
Я работал над рефакторингом некоторого кода, и я думаю, что, возможно, сделал первый шаг по кроличьей норе. Я пишу пример на Java, но я полагаю, что он может быть агностиком. У меня есть интерфейс, Fooопределенный как public interface Foo { int getX(); int getY(); int getZ(); } И реализация как …

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