OCP - это открытый и закрытый принцип объектно-ориентированного проектирования, один из принципов SOLID.
1 ответ

Это хороший дизайн, чтобы использовать предикаты Google Guavas для отделения методов фильтрации от классов

Сегодня я написал в своем блоге следующую статью о том, как предикаты Google Guavas можно использовать для повышения расширяемости вашего дизайна. Это заставило меня задать себе следующий вопрос: "Необходимость в этом решении вызвана более глубоким …
03 июн '13 в 04:33
3 ответа

Имеет ли смысл принцип "Открыто для расширения, закрыто для модификации"?

Мне кажется, что Бобу Мартину нужно что-то, начиная с O, чтобы сделать SOLID, и он нашел в какой-то старой книге этот (возможно, бесполезный) принцип Open/Closed. Как Open/Closed может сосуществовать с Single Responsibility, в котором говорится, что…
1 ответ

Как вы пишете код, который соответствует OCP?

Недавно я пытался узнать об основных принципах проектирования, и OCP немного смутил меня. Имеет смысл, что когда происходит изменение, предпочтительно расширять систему, а не модифицировать существующие и рабочие части. Но не является ли это скорее …
20 окт '10 в 23:32
1 ответ

Как принцип "открытый / закрытый" может помочь избежать повторного развертывания сборок?

Я недавно прочитал хорошую, простую для понимания статью о open/closed principle, И меня удивил следующий опыт: В реальном сценарии, когда база кода в десять, сто или тысяча раз больше, и изменение класса означает повторное развертывание его сборки …
1 ответ

Как изменить функцию, чтобы удовлетворить OCP?

В C реализована следующая функция: function(struct_XX *p) { if(p->A) { if(p->B) { do something0; } if(p->C) { do something1; } if(p->D && p->E) { do something2; } if(p->Z) { do something3; } } } каждая ветвь имеет свои зада…
11 сен '14 в 01:44
7 ответов

Открыто-закрытый принцип и модификатор Java "финал"

Принцип открытого-закрытого положения гласит, что "программные объекты (классы, модули, функции и т. Д.) Должны быть открыты для расширения, но закрыты для модификации". Тем не менее, Джошуа Блох в своей знаменитой книге "Эффективная Java" дает след…
18 мар '09 в 12:08
2 ответа

Почему статические и экземплярные блоки init в Enums ведут себя не так, как в классах

При изучении сертификационного теста Java я узнал, что статические блоки инициализации запускаются один раз при загрузке класса, в порядке появления в исходном коде, что блоки инициализации экземпляра запускаются каждый раз, когда создается экземпля…
16 дек '13 в 20:09
1 ответ

Нарушает ли OCP API, основанный на наследовании? Может ли это быть достигнуто с помощью модели поставщика / внедрения зависимости?

Я разрабатываю API впервые и пытаюсь следовать руководству SOLID. Одна из вещей, с которыми я сталкиваюсь, - это баланс между OCP и тестируемостью с простотой и легкостью расширяемости. Этот API с открытым исходным кодом предназначен для научного мо…
1 ответ

Открытый закрытый принцип

Я понимаю, что этот принцип гласит, что модуль открыт для расширения, но закрыт для модификации, и это ясно, когда мы хотим обновить / модифицировать метод в некотором классе - мы создаем другой класс, который наследует базовый класс, а затем переоп…
28 июн '17 в 08:19
5 ответов

Насколько такой важный принцип "OCP" станет причиной массовой практики дублирования кода?

OCP (открытый / закрытый принцип) является одним из принципов SOLID. Который говорит: "Программные объекты должны быть открыты для расширения, но закрыты для модификации". Мне нужно время, чтобы понять вышеприведенное предложение об OCP. И когда я н…
11 сен '09 в 20:49
4 ответа

Смотря как реализовать простой полиморфизм

У меня очень основной вопрос (я не знаю, почему я не могу думать прямо). Я пытаюсь сделать некоторый полиморфизм. У меня интерфейс выглядит так: Public interface Iplugin { void doSomthing(string _str); } У меня также есть несколько классов плагинов,…
23 апр '12 в 14:03
8 ответов

Если у меня есть полный комплект модульных тестов для приложения, должен ли я по-прежнему применять принцип Open/Closed (OCP)?

Статья в Википедии об OCP гласит (выделено мое): ... принцип открытого / закрытого состояния гласит: "программные объекты (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации"... Это особенно ценно в прои…
13 сен '09 в 14:39
7 ответов

Чистый код для удаления состояния переключателя (используя полиморфизм)

Как говорят принципы SOLID, лучше удалить условия переключения, преобразовав их в классы и интерфейсы. Я хочу сделать это с помощью этого кода: Примечание. Этот код не является реальным, и я просто вложил в него свою идею. MessageModel message = get…
07 мар '18 в 08:49
0 ответов

SOLID - нарушенный принцип открытого-закрытого

У меня есть следующий фрагмент кода class Vehicle{ public String brand; public double price; public int productionYear; public String toString(String formatType) { switch(formatType) { case "JSON": // JSON formatting here return jsonFormattedString;…
10 сен '18 в 17:23
3 ответа

Не нарушает ли наследование нескольких классов из базового класса (DTO) какой-либо из принципов SOLID?

Я получаю несколько DTO (объект передачи данных) из базового DTO. У меня есть свойство в базе DTO (isUpdateAvailable), которое является общим для всего производного класса. У меня есть метод, который является общим для случая множественного использо…
30 май '17 в 02:58
2 ответа

Осмысление открытого закрытого принципа

Я пытаюсь осмыслить принцип открытого закрытого: Модули должны быть открыты для расширения и закрыты для модификации С точки зрения java это расширение конкретно наследование или оно включает наследование, а также добавление новых методов или свойст…
11 июл '17 в 17:05
1 ответ

Открытый / закрытый принцип и единая ответственность - графики

Я кодирую программу исследования Графа и столкнулся с небольшим камнем преткновения. Мой график состоит из Vertex а также NetworkLink объекты, и могут быть получены путем запроса GeographyModel объект. Идея List<NetworkLink> извлекается из Geo…
14 сен '16 в 18:07
2 ответа

OCP Java SE 6 Практические вопросы - WeatherTest Enum

Вопрос в "Оценочном экзамене OCP Java SE 6 для программистов (экзамен 310-065)" 2. Дано: public class WeatherTest { static Weather w; public static void main(String[] args) { System.out.print(w.RAINY.count + " " + w.Sunny.count + " "); } enum Weathe…
06 май '15 в 16:46
3 ответа

Работа с иерархией наследования из-за принципа Open-Closed

Когда я пытаюсь следовать принципу Открыто-Закрыто (OCP), после ряда реализованных вариантов использования я всегда получаю иерархию унаследованных классов. Обычно это происходит с ViewModel в структуре MVVM, потому что они сильно меняются. Например…
21 янв '19 в 10:43
1 ответ

Java, шаблон проектирования: менеджер по сценариям использования и актерам

В проекте у меня есть 3 актера (пользователь, эксперт, администратор) и 5 ​​основных вариантов использования (CRUD: создание, чтение, обновление, удаление и синхронизация). Но доступ пользователей к каждому варианту использования отличается от други…
17 янв '15 в 05:27