@@ -5,25 +5,34 @@ package com.iluwatar.chain {
5
5
+ main(args : String[]) {static}
6
6
}
7
7
class OrcCommander {
8
- + OrcCommander(handler : RequestHandler)
9
- + handleRequest(req : Request)
10
- + toString () : String
8
+ - LOGGER : Logger {static}
9
+ + OrcCommander ()
10
+ + canHandleRequest(req : Request) : boolean
11
+ + getPriority () : int
12
+ + handle(req : Request)
13
+ + name () : String
11
14
}
12
15
class OrcKing {
13
- - chain : RequestHandler
16
+ - handlers : List< RequestHandler>
14
17
+ OrcKing ()
15
18
- buildChain ()
16
19
+ makeRequest(req : Request)
17
20
}
18
21
class OrcOfficer {
19
- + OrcOfficer(handler : RequestHandler)
20
- + handleRequest(req : Request)
21
- + toString () : String
22
+ - LOGGER : Logger {static}
23
+ + OrcOfficer ()
24
+ + canHandleRequest(req : Request) : boolean
25
+ + getPriority () : int
26
+ + handle(req : Request)
27
+ + name () : String
22
28
}
23
29
class OrcSoldier {
24
- + OrcSoldier(handler : RequestHandler)
25
- + handleRequest(req : Request)
26
- + toString () : String
30
+ - LOGGER : Logger {static}
31
+ + OrcSoldier ()
32
+ + canHandleRequest(req : Request) : boolean
33
+ + getPriority () : int
34
+ + handle(req : Request)
35
+ + name () : String
27
36
}
28
37
class Request {
29
38
- handled : boolean
@@ -36,13 +45,11 @@ package com.iluwatar.chain {
36
45
+ markHandled ()
37
46
+ toString () : String
38
47
}
39
- abstract class RequestHandler {
40
- - LOGGER : Logger {static}
41
- - next : RequestHandler
42
- + RequestHandler(next : RequestHandler)
43
- + handleRequest(req : Request)
44
- # printHandling(req : Request)
45
- + toString() : String {abstract}
48
+ interface RequestHandler {
49
+ + canHandleRequest (Request ) : boolean {abstract }
50
+ + getPriority () : int {abstract }
51
+ + handle (Request ) {abstract }
52
+ + name () : String {abstract }
46
53
}
47
54
enum RequestType {
48
55
+ COLLECT_TAX {static}
@@ -52,10 +59,9 @@ package com.iluwatar.chain {
52
59
+ values() : RequestType[] {static}
53
60
}
54
61
}
55
- OrcKing --> "- chain " RequestHandler
56
- RequestHandler --> "- next " RequestHandler
62
+ OrcKing --> "- handlers " RequestHandler
57
63
Request --> "- requestType " RequestType
58
- OrcCommander -- |> RequestHandler
59
- OrcOfficer -- |> RequestHandler
60
- OrcSoldier -- |> RequestHandler
64
+ OrcCommander .. |> RequestHandler
65
+ OrcOfficer .. |> RequestHandler
66
+ OrcSoldier .. |> RequestHandler
61
67
@enduml
0 commit comments