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

35
Есть ли шаблон дизайна, который будет применяться к дисконтным моделям?

Существуют ли известные шаблоны проектирования для реализации дисконтных моделей? Под дисконтными моделями я имею в виду следующее: Если клиент покупает продукт X, продукт Y и продукт Z, он получает скидку в размере 10% или 100 долларов США. Если клиент покупает 100 единиц Продукта X, он получает...

34
Как определить, соответствует ли класс единому принципу ответственности?

Принцип единой ответственности основан на принципе высокой сплоченности. Разница между ними заключается в том, что у очень сплоченных классов есть набор обязанностей, которые тесно связаны, в то время как у классов, придерживающихся SRP, есть только одна ответственность. Но как нам определить,...

34
Реализация идеи Модель-Представление-Презентатор

Я пытаюсь получить хорошее представление о том, как реализовать хорошее разделение между пользовательским интерфейсом и моделью, но мне сложно понять, где именно разделить линии. Я смотрел на Model-View-Presenter, но я не уверен, как именно реализовать его. Например, мой вид имеет несколько...

34
Является ли это запахом кода, чтобы хранить общие объекты в контейнере, а затем получать объекты и выгружать объекты из контейнера?

Например, у меня есть игра, в которой есть несколько инструментов для повышения способности игрока: Tool.h class Tool{ public: std::string name; }; И некоторые инструменты: Sword.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Shield.h class Shield : public...

34
Как улучшить шаблон Bloch's Builder Pattern, чтобы сделать его более подходящим для использования в расширяемых классах

На меня сильно повлияла книга Джошуа Блоха «Эффективная Java» (2-е издание), вероятно, больше, чем с любой книгой по программированию, которую я читал. В частности, его Образец Строителя (пункт 2) оказал наибольший эффект. Несмотря на то, что за последние несколько месяцев программист Блоха сделал...

33
Прогрессивное улучшение по сравнению с одностраничными приложениями

Я только что вернулся с конференции в Бостоне под названием An Event Apart . По-настоящему популярной темой среди докладчиков была идея постепенного улучшения : контент сайта должен идти в HTML, а JavaScript должен использоваться только для улучшения поведения. Аргументы, которые докладчики...

33
Являются ли шаблоны проектирования силой хорошего или плохого? [закрыто]

Я слышал, как утверждается, что шаблоны дизайна - лучшая вещь с нарезанного хлеба. Я также слышал, как утверждается, что шаблоны проектирования, как правило, усугубляют «Второй системный синдром», что они чрезмерно используются и заставляют пользователей думать, что они лучшие дизайнеры, чем они...

33
Может ли кто-то объяснить простыми словами, что такое разрушитель?

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

33
Разница между шаблоном адаптера и прокси-сервером?

Насколько мы понимаем, шаблон адаптера создает объект-обертку для нашего реального объекта интереса, просто еще один уровень косвенности, который обеспечивает гибкость. гибкость заключается в том, что если интерфейс реального объекта изменяется, то мы меняем интерфейс оболочки, указывающий на...

33
Как я могу предотвратить неизвестное дублирование кода?

Я работаю на довольно большой кодовой базе. Сотни классов, тонны различных файлов, множество функциональных возможностей, более 15 минут требуется для создания новой копии и т. Д. Большая проблема с такой большой кодовой базой состоит в том, что у нее есть довольно много вспомогательных методов и...

33
Кто должен управлять навигацией в приложении MVVM?

Пример # 1: у меня есть представление, отображаемое в моем приложении MVVM (давайте использовать Silverlight для целей обсуждения), и я нажимаю кнопку, которая должна перенести меня на новую страницу. Пример # 2: В этом же представлении есть еще одна кнопка, которая при нажатии открывает окно...

32
Почему базы кода в n-уровневой разработке имеют равное количество, если не больше, кода JavaScript сейчас?

Я давно занимаюсь веб-программированием, и где-то я забыл, почему мы делаем то, что делаем сегодня (или как мы поступили так)? Я начал с базовой веб-разработки на ASP, и очень рано, на странице были смешаны отображение и бизнес-логика. Разработка на стороне клиента сильно различалась (VBScript,...

32
Следует ли нам избегать использования шаблонов проектирования в постоянно меняющихся проектах?

Мой друг работает в небольшой компании над проектом, который ненавидит каждый разработчик: он вынужден выпустить как можно быстрее, он единственный, кто, похоже, заботится о техническом долге, у клиента нет технической подготовки и т. Д. Он рассказал мне историю, которая заставила меня задуматься о...

32
Это хорошая практика, чтобы использовать список перечислений?

В настоящее время я работаю в системе, где есть пользователи, и у каждого пользователя есть одна или несколько ролей. Является ли хорошей практикой использование списка значений Enum для пользователя? Я не могу придумать ничего лучшего, но с этим не все в порядке. enum Role{ Admin = 1, User = 2, }...

32
Выбор правильного шаблона дизайна

Я всегда осознавал важность использования шаблонов дизайна. Мне интересно, как другие разработчики выбирают наиболее подходящий. Используете ли вы ряд характеристик (например, блок-схему), чтобы помочь вам принять решение? Например: Если объекты связаны, но мы не хотим указывать конкретный класс,...

32
Хорошо разработанное / высококачественное программное обеспечение с открытым исходным кодом [закрыто]

Я учусь на уроке дизайна программного обеспечения, где мне следует выбрать программное обеспечение с открытым исходным кодом для анализа с точки зрения дизайна программного обеспечения. Это должен быть большой проект: не менее 100 000 строк кода. Я действительно хотел бы выбрать программное...

32
Почему шаблон проектирования метода фабрики полезнее, чем иметь классы и вызывать их по отдельности?

Из шаблонов проектирования «Банды четырех» есть метод Фабрики: class Factory(product) case product when a new A when b new B when c new C end new Factory(a) Почему это более полезно , чем иметь три класса, a, bи cи называя их по...

32
Каков принцип наименьшего удивления?

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

31
Зачем нам нужен класс Builder при реализации шаблона Builder?

Я видел много реализаций шаблона Builder (в основном на Java). Все они имеют класс сущности (скажем, Personкласс) и класс строителя PersonBuilder. Конструктор "складывает" различные поля и возвращает a new Personс переданными аргументами. Зачем нам явно нужен класс построителя вместо того, чтобы...

31
Вы обычно отправляете объекты или их переменные-члены в функции?

Что является общепринятой практикой между этими двумя случаями: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } или function insertIntoDatabase(long accountId, long thingId, double someValue) {...