-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
57 lines (32 loc) · 2.67 KB
/
Solution.java
File metadata and controls
57 lines (32 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//This beginning of miracles did Jesus in Cana of Galilee, and manifested forth his glory; and his disciples believed on him. (John 2:11)
package com.javarush.task.task37.task3713;
import com.javarush.task.task37.task3713.space.crew.AbstractCrewMember;
import com.javarush.task.task37.task3713.space.SpaceShip;
/*
Chain of Responsibility
*/
public class Solution {
public static void main(String[] args) {
SpaceShip spaceShip = new SpaceShip();
AbstractCrewMember crewMember = spaceShip.getCrewChain();
crewMember.handleRequest(AbstractCrewMember.CompetencyLevel.EXPERT, "ATTACK");
System.out.println("-----------------------------------------");
crewMember.handleRequest(AbstractCrewMember.CompetencyLevel.NOVICE, "WASH THE FLOOR");
System.out.println("-----------------------------------------");
crewMember.handleRequest(AbstractCrewMember.CompetencyLevel.INTERMEDIATE, "CHECK ENGINE");
System.out.println("-----------------------------------------");
crewMember.handleRequest(AbstractCrewMember.CompetencyLevel.ADVANCED, "SET ROUTE");
}
}
/*
Chain of Responsibility
Амиго, у нас проблема! Во время визита на планету #IND893 мы рискнули отдать на аутсорсинг автоматизацию входящих задач для членов команды. В это сложно поверить, но похоже всю работу теперь должен выполнять первый помощник!
Необходимо срочно исправить поведение программы, ведь полы может помыть и юнга, а приказ "к бою!" может дать только капитан.
P.S. Постарайся реализовать метод handleRequest таким образом, чтобы при добавлении новых должностей нам не требовалось вносить в него изменения. Другие методы не трогай.
P.P.S. Все enum поддерживают интерфейс Comparable.
Требования:
1. Запрос должен быть обработан текущим членом команды, если это возможно.
2. Запрос должен быть передан по цепочке выше, если текущий член команды не может его обработать.
3. Классы CabinBoy, Engineer, FirstMate и Captain должны быть потомками класса AbstractCrewMember.
4. Класс AbstractCrewMember должен быть абстрактным.
*/