Open-Closed-Principle – вопросы и ответы

69
голосов
4
ответа
Я глубоко вхожу в новый проект, который я рассматриваю с помощью набора шаблонов и их специализаций. Теперь, после дня без программирования, я спрашиваю, действительно ли это стоит лишних строк код...
7 лет, 7 месяцев назад steffen
61
голос
2
ответа
Существует много примеров использования OCP с помощью наследования. Но я смущен тем, как мы можем использовать OCP с делегацией. Может ли кто-нибудь поделиться какой-либо выборкой?
7 лет, 9 месяцев назад user1074896
49
голосов
1
ответ
У меня есть класс, где находятся все наши данные, здесь я открываю файл: carIn= open("dataIn.txt","w") carOut= open("dataUit.txt","w") В другом классе у меня есть цикл для основной программы. Я зак...
1 год, 9 месяцев назад Christophe Beke
50
голосов
1
ответ
это хороший шаблон для добавления объекта параметра вместо примитива для соблюдения принципа Open Close. Допустим, у меня есть этот интерфейс public interface IBar{ void DoSomething(int id); } Если...
6 лет, 3 месяца назад remi bourgarel
76
голосов
2
ответа
Учитывая следующий код public interface IEntity { int Id { get; set; } } public class User : IEntity { public int Id { get; set; } } public abstract class RepositoryBase<TEntity> where TEntit...
8 лет, 9 месяцев назад Dave Archer
49
голосов
4
ответа
Поэтому, когда был написан оригинальный код, было необходимо только сказать класс LabTest. Но теперь скажите, что у нас есть новые требования, чтобы добавить say RadiologyTest, EKGTest и т.д. Эти к...
5 лет, 9 месяцев назад krprasad
49
голосов
2
ответа
В приведенном ниже коде класс MessageProcessor нарушает принцип Open Closed - для каждой новой реализации IMessage требуется изменение этого класса. Есть ли хороший чистый шаблон для такого сценари...
5 лет, 9 месяцев назад glasswall
60
голосов
1
ответ
Я провел большую часть своего дневного чтения по принципу "Открытый/Закрытый", и я не могу понять его полностью. Вот некоторые статьи, которые я уже прочитал, и кажется, что я что-то пропустил. Пон...
5 лет, 1 месяц назад Will Marcouiller
49
голосов
1
ответ
Очищение вещей в начале: Я понимаю, как применять OCP к коду ниже (виртуальный класс, DI и т.д., Есть много ресурсов в Интернете об этом) Я знаю (но не понимаю) аргументы, почему мне нужно применят...
1 год, 11 месяцев назад TommyLee
49
голосов
1
ответ
Сценарий Каждую ночь мы проводим серию расчетов по примерно миллионам клиентских контрактов. Каждый контракт связан с одной группой из примерно десяти продуктов, каждая из которых может использоват...
9 лет, 6 месяцев назад Mike Woodhouse
96
голосов
1
ответ
У меня есть простое событие переключения, и все работает отлично на рабочем столе, но когда я иду на телефон, я должен дважды нажать, чтобы открыть его. Вот что я имею: $(".service-m").click(functi...
6 лет, 4 месяца назад user2751645
49
голосов
2
ответа
У меня есть иерархия классов, отвечающая за разбор или сопоставление одной модели (или сообщения) с другой. Он имеет нетривиальную логику. internal interface IMessageParser<T, K> where T : cl...
6 лет назад Sam Leach
91
голос
3
ответа
Я только что создал следующий метод в одном из моих классов public static bool Assimilate(this List<Card> first, List<Card> second) { // Trivial if (first.Count == 0 || second.Count == ...
5 лет, 10 месяцев назад Trauer
60
голосов
0
ответов
Я пытаюсь выполнить несколько ядер параллельно. Каждое ядро не зависит друг от друга. Я пытаюсь выполнить ядро на GPU. Я думаю, что это не в порядке исполнения и изолировать каждое ядро отдельно. Э...
1 год, 6 месяцев назад user10149483
49
голосов
3
ответа
Мне нужно добавить новую функциональность в проект, и я стараюсь сделать это наилучшим образом. Итак, новая функция => Открыть принцип закрытия . Я не хочу менять существующий код, правильно? Во...
2 года, 3 месяца назад Adrian Chiritescu
50
голосов
2
ответа
Я пытаюсь понять принципы SOLID и поэтому реализовал некоторые фрагменты java. Сейчас моя озабоченность - ОКР. Имея следующие образцы, public abstract class Bakery { public abstract Bakegood bake()...
3 года, 11 месяцев назад Arthur Eirich
106
голосов
4
ответа
Принцип open/closed утверждает, что класс должен быть открыт для расширения, но закрыт для модификации. Я думал, что часть модификации строго связана с изменением исходного кода базового класса. Но...
3 года, 8 месяцев назад conectionist
50
голосов
1
ответ
В приведенном ниже коде пропускает ли частный член _field из class Foo в качестве параметра внешнего метода ( Bar.DoSomething(_field) ) нарушает принцип Open/Closed в практике SOLID? В объектно-ори...
3 года, 10 месяцев назад David Vogel
49
голосов
0
ответов
Для справки: принцип открытого закрывания (OCP): https://www.cs.utexas.edu/users/downing/papers/OCP.pdf Поэтому я почти закончил свой курс ООП, и у меня есть вопрос об OCP и почему RTTI нарушает ег...
3 года, 10 месяцев назад Zach
60
голосов
1
ответ
Программа анализирует файлы журнала - каждый файл журнала может иметь различный формат поля (фиксированная ширина, запятая и т.д.). Также каждый файл журнала смешивается с несколькими различными ти...
7 лет, 4 месяца назад ca9163d9
62
голоса
1
ответ
У меня есть сторонний код, который выглядит следующим образом: class Foo def initialize @hello = "world" end def msg @hello end end Затем я добавил новый файл foo_redefinition.rb с этим содержимым ...
3 года, 6 месяцев назад Luís Guilherme
50
голосов
1
ответ
Как я могу реорганизовать этот код ruby с помощью принципа Open/Closed или Strategy? Я знаю, что основная идея состоит в том, что "объекты программного обеспечения (классы, модули, функции и т.д.) ...
1 год, 7 месяцев назад spirito_libero
91
голос
1
ответ
Что напечатает следующий фрагмент кода? Path p1 = Paths.get("c:\\personal\\.\\photos\\..\\readme.txt"); Path p2 = Paths.get("c:\\personal\\index.html"); Path p3 = p1.relativize(p2); System.out.prin...
11 месяцев назад jenny lorine
99
голосов
2
ответа
У меня есть простая программа, которая рисует геометрические фигуры на основе данных мыши, предоставленных пользователем. У меня есть один класс, который обрабатывает отслеживание мыши (он получает...
6 лет, 10 месяцев назад Kamil T
70
голосов
1
ответ
Скажем, у меня есть случай переключения, который выглядит примерно так: (просто пример) switch(Type) { case MSSQL: / Connector = new MSSQLCOnnector( args); break; case MYSQL: Connector = new MYSQLC...
1 год, 9 месяцев назад jhthewow
70
голосов
3
ответа
Я столкнулся с проблемой инверсии зависимостей в factory методе, а также нарушил принцип Open Closed. Мой код выглядит следующим образом: public interface IWriter { void WriteToStorage(string data)...
3 года, 7 месяцев назад Riki
212
голосов
5
ответов
Я настраиваю Automapper в Bootstrapper, и я вызываю Bootstrap() в Application_Start() , и мне сказали, что это неправильно, потому что я должен изменить класс Bootstrapper каждый раз, когда мне нуж...
10 лет, 2 месяца назад Omu
60
голосов
4
ответа
Принцип единой ответственности гласит, что: У класса должна быть одна и только одна причина для изменения. Принцип Open/Closed гласит, что: Вы должны иметь возможность расширять поведение классов, ...
1 год, 11 месяцев назад series0ne
104
голоса
1
ответ
У меня есть следующий код С#. Здесь валидации хранятся вне класса, чтобы удовлетворить принцип открытого доступа. Это работает нормально. Но проблема в том, что валидации не являются общими. Он спе...
7 лет, 12 месяцев назад Lijo
122
голоса
1
ответ
Я использовал рефакторинг старого кода простого анализатора файлов script , когда я натолкнулся на следующий код: StringReader reader = new StringReader(scriptTextToProcess); StringBuilder scope = ...
8 лет, 11 месяцев назад Reyhn
69
голосов
4
ответа
У меня есть требование проверить, является ли почтовый код для конкретной страны обязательным или нет на основе поставляемого countryid . В настоящее время я делаю это с помощью оператора switch , ...
7 лет, 5 месяцев назад Anupam Yadav
78
голосов
3
ответа
В java, если мы используем перечисление, и в конечном итоге мы хотим добавить/удалить атрибут в/из этого перечисления, следовательно, его использование, мы нарушаем принцип open/closed в твердых пр...
3 года, 7 месяцев назад Supun Wijerathne
61
голос
2
ответа
Я работаю над большим проектом в C++, который будет иметь графический интерфейс пользователя. Пользовательский интерфейс будет использовать некоторый шаблон проектирования (MVVM/MVC), который будет...
4 года, 10 месяцев назад Omri Bashari
49
голосов
2
ответа
Есть что-то, что я не понимаю о принципе открытого закрытия. Скажем, что вы сделали этот код: public abstract class Player { public string Name { get; set; } public int Level { get; set; } } public...
1 год, 4 месяца назад Maxime Recuerda
50
голосов
3
ответа
В настоящее время я реализую шаблон Command-Handler для службы, которую я проектирую, где Command является, по существу, DTO для .Handle() Handler .Handle() . Когда я начинаю реализовывать различны...
5 лет, 10 месяцев назад arjo.reich
77
голосов
2
ответа
Я пытаюсь создать общий фильтр, который отображает уникальные значения в сетке данных и позволяет пользователю фильтровать уникальные значения для определенного столбца в сетке. Мне понравились отв...
5 лет, 6 месяцев назад Shankar Raju
97
голосов
9
ответов
Я уже давно думал об этом объектно-ориентированном вопросе проектирования и не смог найти удовлетворительное решение, поэтому подумал, что я бы бросил его на толпу здесь для некоторых мнений. У мен...
11 лет, 5 месяцев назад JonC
49
голосов
1
ответ
Мне нужно реализовать на Java приложение, которое воспроизводит и записывает видео. Видеоплеер имеет два состояния: Playing mode recording mode . В режиме воспроизведения мы можем Play, Pause,Stop,...
2 года назад Mous Kamel
51
голос
1
ответ
Скажем, у меня есть структура XML файлов для импорта в базу данных: <Flight> <FlightName>FN 7777</FlightName> <Passengers> <American> <FirstName>Michael</Firs...
3 года, 3 месяца назад Jack Houston
109
голосов
1
ответ
Я действительно смущен двумя темами: 1) - Дублирование кода (я очень хорошо понимаю) 2) - Принцип открытого закрытия (нужно объяснять, когда его использовать? Какие сценарии) Что произошло во время...
1 год, 11 месяцев назад Eddy Bayonne
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема