HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <h2>Проблема</h2>
1 <h2>Проблема</h2>
2 <p>При разработке программного обеспечения часто возникает необходимость создания кода, который может обрабатывать различные типы данных и объектов. Однако, если код не спроектирован с учетом масштабируемости, он может стать громоздким и трудным для поддержки</p>
2 <p>При разработке программного обеспечения часто возникает необходимость создания кода, который может обрабатывать различные типы данных и объектов. Однако, если код не спроектирован с учетом масштабируемости, он может стать громоздким и трудным для поддержки</p>
3 <p>Одним из примеров такой проблемы является обработка различных типов фигур в геометрических расчетах</p>
3 <p>Одним из примеров такой проблемы является обработка различных типов фигур в геометрических расчетах</p>
4 - <p>Создадим два класса, представляющие геометрическе фигуры:</p>
4 + <p>Создадим два класса, представляющие геометрические фигуры:</p>
5 <p>и метод, который будет выполнять геометрические расчеты</p>
5 <p>и метод, который будет выполнять геометрические расчеты</p>
6 <p>Проблема этого кода заключается в том, что его сложно масштабировать. Если нам нужно добавить новый тип фигуры, например, круг, то нам придется изменить метод getTotalArea()</p>
6 <p>Проблема этого кода заключается в том, что его сложно масштабировать. Если нам нужно добавить новый тип фигуры, например, круг, то нам придется изменить метод getTotalArea()</p>
7 <p>Сделаем это, добавим еще одну фигуру - круг</p>
7 <p>Сделаем это, добавим еще одну фигуру - круг</p>
8 <p>Расширим метод так, чтобы он мог работать еще и с кругами</p>
8 <p>Расширим метод так, чтобы он мог работать еще и с кругами</p>
9 <p>Если мы добавим еще 10 типов фигур, то метод getTotalArea() станет очень большим и сложным, и нам придется изменять его каждый раз, когда мы добавляем новый тип фигуры</p>
9 <p>Если мы добавим еще 10 типов фигур, то метод getTotalArea() станет очень большим и сложным, и нам придется изменять его каждый раз, когда мы добавляем новый тип фигуры</p>
10 <h2>Решение</h2>
10 <h2>Решение</h2>
11 <p>Сделаем интерфейс, который будут реализовывать геометрические фигуры</p>
11 <p>Сделаем интерфейс, который будут реализовывать геометрические фигуры</p>
12 <p>Откорректируем классы, чтобы они реализовывали этот интерфейс</p>
12 <p>Откорректируем классы, чтобы они реализовывали этот интерфейс</p>
13 <p>Изменим метод для подсчета площади</p>
13 <p>Изменим метод для подсчета площади</p>
14 <p>Теперь метод getTotalArea() может обрабатывать любые фигуры, реализующие интерфейс Shape. В результате наших изменений мы получили более гибкий и масштабируемый код, который позволяет легко добавлять новые типы фигур без изменения метода getTotalArea()</p>
14 <p>Теперь метод getTotalArea() может обрабатывать любые фигуры, реализующие интерфейс Shape. В результате наших изменений мы получили более гибкий и масштабируемый код, который позволяет легко добавлять новые типы фигур без изменения метода getTotalArea()</p>
15 <h2>Игры разума</h2>
15 <h2>Игры разума</h2>
16 <p>Проблема этого кода заключается в том, что для добавления новой игры необходимо каждый раз изменять класс Example2 и добавлять новый случай в методах getGameDescription() и generateQuestion(). Это может привести к дублированию кода и усложнению класса, что затрудняет его поддержку и расширение.</p>
16 <p>Проблема этого кода заключается в том, что для добавления новой игры необходимо каждый раз изменять класс Example2 и добавлять новый случай в методах getGameDescription() и generateQuestion(). Это может привести к дублированию кода и усложнению класса, что затрудняет его поддержку и расширение.</p>
17 <p>Чтобы решить эту проблему, можно создать интерфейс для игр, который будет иметь методы getDescription() и generateQuestion(). Тогда каждый класс игры будет реализовывать этот интерфейс</p>
17 <p>Чтобы решить эту проблему, можно создать интерфейс для игр, который будет иметь методы getDescription() и generateQuestion(). Тогда каждый класс игры будет реализовывать этот интерфейс</p>
18 <p>Создадим интерфейс:</p>
18 <p>Создадим интерфейс:</p>
19 <p>Доработаем классы игр, чтобы они реализовывали интерфейс</p>
19 <p>Доработаем классы игр, чтобы они реализовывали интерфейс</p>
20 <p>Теперь мы можем упростить код в классе Example2</p>
20 <p>Теперь мы можем упростить код в классе Example2</p>
21  
21