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

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

1
Принцип Открытого Закрытия (OCP) против Принципа Инверсии Зависимостей (DIP)
Я пытался понять разницу между Open Closed Principle (OCP) и Dependency Inversion Princible (DIP). Основываясь на исследованиях, которые я провел в Интернете, я пришел к выводу, что «DIP - это один из вариантов, с помощью которого мы можем достичь OCP». Я прав на это? Можете ли вы привести пример, который …

2
В чем практическая разница между стилями внедрения зависимостей?
Я новичок в внедрении зависимостей, и у меня есть несколько вопросов о том, какой стиль я должен использовать в своих приложениях. Я только что прочитал статью Мартин Фаулер « Инверсия контейнеров управления» и «Шаблон внедрения зависимостей », но не могу понять практической разницы между инжектором конструктора, сеттера и интерфейса. Мне …

2
Реализация шаблона команды в API RESTful
Я нахожусь в процессе разработки HTTP API, надеюсь, сделать его максимально RESTful. Есть некоторые действия, функциональность которых распространяется на несколько ресурсов, и иногда их нужно отменить. Я подумал, что это звучит как шаблон команды, но как я могу смоделировать его в ресурс? Я представлю новый ресурс под названием XXAction, такой …

4
Являются ли неизменяемые / не имеющие состояния синглтоны плохими?
В последнее время произошла какая-то революция против синглетонов, но что с ними не так, если они не имеют гражданства? Я знаю разговоры о чрезмерном использовании и все ... это относится ко всему, а не только к одиночкам.

2
Нужны советы по дизайну
Я разрабатываю приложение, которое будет использоваться для открытия и закрытия клапанов в промышленной среде, и подумывал о чем-то простом, как это: public static void ValveController { public static void OpenValve(string valveName) { // Implementation to open the valve } public static void CloseValve(string valveName) { // Implementation to close the …

1
Итак, «в шаблонах дизайна отсутствуют языковые функции»? [закрыто]
Трудно сказать, что здесь спрашивают. Этот вопрос является двусмысленным, расплывчатым, неполным, чрезмерно широким или риторическим, и на него нельзя дать разумный ответ в его нынешней форме. Чтобы получить разъяснения по этому вопросу, чтобы его можно было снова открыть, посетите справочный центр . Закрыто 7 лет назад . Здесь, в «Программистах», …

2
Могут ли объекты Persistance-Ignorant реализовать ленивую загрузку?
Постоянное невежество - это применение принципа единой ответственности, который на практике означает, что доменные объекты ( DO ) не должны содержать код, связанный с постоянством, вместо этого они должны содержать только доменную логику. а) Я предполагаю, что это означает, что код, который связывается с нижними уровнями (то есть уровнями персистентности), …

4
Шаблоны проектирования / стратегии для пользовательских полей и типов данных
Существуют ли какие-либо общие стратегии или шаблоны проектирования для разработки приложений, которые могут либо добавлять настраиваемые поля в объекты данных, либо создавать собственные настраиваемые определения объектов. Например, я имею в виду такие продукты, как SalesForce, где вы можете иметь свои собственные типы информации, такие как фреймворк Expression Engine и способ …

5
Является ли перегрузка примером принципа Open / Closed?
Википедия говорит «программные объекты (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации» Слово функции привлекло мое внимание, и теперь я задаюсь вопросом, можем ли мы предположить, что создание перегрузки для метода может рассматриваться как пример принципа Open / closed или нет? Позвольте мне …

8
Насколько «простым» является настоящее решение KISS? [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …

1
Шаблоны для ajax-тяжелых веб-приложений
До сих пор я был большим поклонником шаблона MVC для разработки веб-приложений. Для Интернета я разработал в основном на PHP (с фреймворками Kohana и CodeIgniter) и Ruby (RoR). По мере того, как мои приложения становятся тяжелее на стороне Ajax (одностраничные приложения и т. Д.), Я заметил, что не могу не …

8
Какова хорошая практика кода, когда создавать функцию / метод для небольших повторяющихся сегментов кода?
Много раз на протяжении написания более крупных программ я спрашивал, сколько копий и вставок имеет смысл помещать код в функцию или метод и каково хорошее практическое правило? Я использовал эмпирическое правило из четырех или более строк и появлялся более двух раз, затем я сделал простую функцию / метод, содержащий этот …

3
Улучшения в шаблоне дизайна Джошуа Блоха?
Еще в 2007 году я прочитал статью о том, как Джошуа Блохс рассматривает «шаблон строителя» и как его можно изменить, чтобы улучшить чрезмерное использование конструкторов и сеттеров, особенно когда объект имеет большое количество свойств, большинство из которых являются необязательными. Краткое описание этого шаблона проектирования изложено здесь . Мне понравилась идея, …

4
Избегайте использования метода инициализации
У меня есть этот существующий код, где у них есть класс и метод инициализации в этом классе. Ожидается, что, как только объект класса будет создан, им нужно вызвать initialize для него. Причина, по которой существует метод initialize . Объект создается раньше, чтобы иметь глобальную область видимости, а затем метод initialize …

1
Архитектура программного обеспечения для аутентификации / контроля доступа веб-сервиса REST
Я настраиваю новый веб-сервис RESTful и мне нужно предоставить модель управления доступом на основе ролей . Мне нужно создать архитектуру, которая позволит пользователям предоставлять свое имя пользователя и пароль для получения доступа к сервисам, а затем ограничивать использование ими сервисов (какие сервисы они могут использовать, чтение против чтения / записи …

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