codebeginer501 Ответов: 1

Как мне рефакторировать эти классы 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;
}

```

1 Ответов