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