Как мне рефакторировать эти классы java
от меня требуется предоставить переконструировать и рефакторинг из классов, которые обеспечивают
максимальная повторяемость, расширяемость и устранение как можно большего количества зависимостей в системе.
класс Альфа. я могу изменить любой из классов любым способом, каким пожелаю, включая переименование,
изменение сигнатур методов и получение новых типов. но я новичок в ООП и не знаю, с чего начать, как это сделать, каков будет результат и почему?
так что может ли кто-нибудь, пожалуйста, предоставить шаги для рефакторинга спасибо.
так что заглушки кода ниже делают
* The method `alpha()` returns an instance of Object based on a `Status` and DayOfWeek. * Either of the classes `Beta` and `Gamma` can be used to handle a `Status` of Slight, Low or Medium and there are many other potential related types than can handle similar requests. * Depending on the DayOfWeek the remaining enumerations of `Status` are handled by instances of `Delta`, `Zeta` and `Epsilon` and an unbounded number of related types. `Delta`, `Zeta` and `Epsilon` can be orchestrated together to create complex types.
Что я уже пробовал:
Class Alpha <pre lang="java">import java.time.DayOfWeek; import java.time.LocalDate; public class Alpha { private Beta beta = new Beta(); private Gamma gamma = new Gamma(); private Delta delta = new Delta(); private Epsilon epsilon = new Epsilon(); private Zeta zeta = new Zeta(); public Object alpha(Status s) { //Beta and Gamma only deal with Status values of Slight, Low and Medium if (s == Status.Slight || s == Status.Low) { return beta.beta(); }else if (s == Status.Medium) { return gamma.gamma(); }else { //Delta, Epsilon and Zeta handle more complex situations DayOfWeek day = LocalDate.now().getDayOfWeek(); return switch (day) { case MONDAY, TUESDAY -> delta.delta(day.name()); case WEDNESDAY, THURSDAY -> epsilon.epsilon(day.name()); case FRIDAY -> zeta.zeta(day.name()); case SATURDAY -> Integer.valueOf((delta.delta(day.name()) + epsilon.epsilon(day.name()))); case SUNDAY -> Integer.valueOf((epsilon.epsilon(day.name()) + zeta.zeta(day.name()))); }; } } }
**Бета-Класса **
```
public class Beta { public String beta() { return "Executing " + this.getClass().getName(); }
}
```
**Класс Гамма**
```
public class Gamma { public String gamma() { return "Executing " + this.getClass().getName(); } }
```
**Класс Дзета**
```
public class Zeta { public int zeta(String value) { return Integer.parseInt(value) + 7; } }
```
**Класс Дельта**
```
public class Delta { public int delta(String value) { return value.hashCode(); } }
```
**Класс Эпсилон**
```
public class Epsilon { public int epsilon(String value) { return value.length(); } }
```
**Статус Перечисления**
```
public enum Status { Slight, Low, Medium, High, Extreme; }
```