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

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

3
Какой смысл в шаблоне PImpl, хотя мы можем использовать интерфейс для той же цели в C ++?
Я вижу много исходного кода, который использует идиому PImpl в C ++. Я предполагаю, что его цель - скрыть личные данные / тип / реализацию, чтобы убрать зависимость, а затем уменьшить время компиляции и проблему включения заголовка. Но интерфейсные / чисто абстрактные классы в C ++ также имеют эту возможность, …

11
Есть ли каноническая книга по шаблонам дизайна? [закрыто]
Я заинтересован в изучении шаблонов проектирования и хотел бы знать, что считается учебником высшего уровня в изучении этого предмета. Существует ли книга, которая является стандартом де-факто для описания лучших практик, методологий проектирования и другой полезной информации о шаблонах проектирования? Что из этой книги делает ее особенной?

7
Почему цепные сеттеры нетрадиционны?
Реализация цепочки на bean-компонентах очень удобна: нет необходимости перегружать конструкторы, мега-конструкторы, фабрики и обеспечивает повышенную читаемость. Я не могу думать о минусах, если только вы не хотите, чтобы ваш объект был неизменным , и в этом случае у него все равно не было бы сеттеров. Так есть ли причина, по …

5
Образец Строителя: Когда терпеть неудачу?
При реализации паттерна «Строитель» я часто путаюсь с тем, когда строить не удается, и мне даже удается каждые несколько дней занимать разные позиции по этому вопросу. Сначала несколько объяснений: Под ранним сбоем я подразумеваю, что создание объекта должно завершиться неудачей, как только будет передан недопустимый параметр. Так что внутри SomeObjectBuilder. …

4
Распространение исключений: когда я должен ловить исключения?
MethodA вызывает MethodB, который, в свою очередь, вызывает MethodC. Нет обработки исключений в MethodB или MethodC. Но в MethodA есть обработка исключений. В MethodC происходит исключение. Теперь это исключение всплывает в методе А, который обрабатывает его соответствующим образом. Что не так с этим? На мой взгляд, в какой-то момент вызывающая …

11
Переменные ошибок - это анти-шаблон или хороший дизайн?
Для обработки нескольких возможных ошибок, которые не должны останавливать выполнение, у меня есть errorпеременная, которую клиенты могут проверять и использовать для создания исключений. Это анти-паттерн? Есть ли лучший способ справиться с этим? Для примера этого в действии вы можете увидеть PHP mysqli API. Предположим, что проблемы видимости (средства доступа, открытая …

2
Какова цель NaN бокса?
Чтение 21-го века C Я пришел к главе 6 в разделе «Маркировка исключительных числовых значений с помощью NaN» , где объясняется использование битов в мантиссе для хранения некоторых произвольных битовых комбинаций, для их использования в качестве маркеров или указателей (упоминается в книге что WebKit использует эту технику). Я не совсем …

13
Шаблоны дизайна - вы их используете?
Будучи студентом IT, один из наших преподавателей недавно дал мне некоторое представление о шаблонах проектирования. Я понял, для чего они, но некоторые аспекты все еще продолжают беспокоить меня. Они действительно используются большинством программистов? Говоря об опыте, у меня были некоторые проблемы при программировании, вещи, которые я не мог решить некоторое …

3
Это плохая практика, что хранилище вызовов контроллера вместо службы?
Это плохая практика, что хранилище вызовов контроллера вместо службы? объяснить больше: Я выяснил, что в хорошем дизайне контроллеры называют сервис, а сервис используют репозиторий. но иногда в контроллере у меня нет / нужна какая-то логика и мне просто нужно извлечь из базы данных и передать ее для просмотра. и я …

5
Каковы недостатки MVC? [закрыто]
Я использую MVC / MV * с тех пор, как начал организовывать свой код много лет назад. Я использую его так долго, что даже не могу придумать какой-либо другой способ структурирования своего кода, и каждая работа, которую я имел после стажировки, была основана на MVC. У меня вопрос, каковы недостатки …

2
Является ли производительность единственной причиной не использовать SignalR (websockets) полностью вместо традиционного REST API?
Я использовал SignalRдля достижения функциональности обмена сообщениями в реальном времени в нескольких из моих проектов. Кажется, он работает надежно и очень прост в освоении. Искушение, по крайней мере для меня, состоит в том, чтобы отказаться от разработки сервиса Web API и использовать его SignalRдля всего. Я чувствую, что это может …

7
Когда опрос по событиям будет лучше, чем использование шаблона наблюдателя?
Существуют ли сценарии, в которых опрос событий был бы лучше, чем использование шаблона наблюдателя ? У меня есть страх перед использованием опроса, и я бы начал его использовать, только если бы кто-то дал мне хороший сценарий. Все, о чем я могу думать, - это то, как шаблон наблюдателя лучше, чем …

3
Что такое помощник? Это шаблон дизайна? Это алгоритм?
Может быть, немного насмешливо, но так как я не могу найти этот ответ нигде в Google, чтобы убедиться, что у Software Engineering есть ответ: Что такое помощник? Я видел, как имя используется везде (имена модулей, имена классов, имена методов), как будто семантика была глубокой и содержательной, но в контексте компьютерных …

1
В чем разница между фабричным шаблоном и абстрактной фабрикой?
Наконец, серьезно начав пытаться выучить некоторые базовые паттерны (очень поздно в карьере, но это уже другая история), я пытаюсь разобраться в различиях между Фабричным паттерном и Абстрактной Фабрикой. Каковы основные различия между этими двумя моделями? Я понимаю, что Фабричный метод создает объекты с помощью наследования, а Абстрактная Фабрика делает это …

6
Почему избегать наследования Java «расширяет»
Джейм Гослинг сказал «Вы должны по возможности избегать наследования реализации». и вместо этого используйте наследование интерфейса. Но почему? Как мы можем избежать наследования структуры объекта, используя ключевое слово «extends», и в то же время сделать наш код «Object Oriented»? Может ли кто-нибудь привести пример «Объектно-ориентированный», иллюстрирующий эту концепцию в сценарии …

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