enhancement: #1947 implement chain of responsibilities with java stream (#2123)

This commit is contained in:
JanFidor authored and GitHub committed 2022-10-26 20:26:04 +03:00
1 parent 4108f86177
commit 1ea98bb8d5
8 files changed
+106 -86

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 132 KiB

@@ -5,25 +5,34 @@ package com.iluwatar.chain {
+ main(args : String[]) {static}
}
class OrcCommander {
+ OrcCommander(handler : RequestHandler)
+ handleRequest(req : Request)
+ toString() : String
- LOGGER : Logger {static}
+ OrcCommander()
+ canHandleRequest(req : Request) : boolean
+ getPriority() : int
+ handle(req : Request)
+ name() : String
}
class OrcKing {
- chain : RequestHandler
- handlers : List<RequestHandler>
+ OrcKing()
- buildChain()
+ makeRequest(req : Request)
}
class OrcOfficer {
+ OrcOfficer(handler : RequestHandler)
+ handleRequest(req : Request)
+ toString() : String
- LOGGER : Logger {static}
+ OrcOfficer()
+ canHandleRequest(req : Request) : boolean
+ getPriority() : int
+ handle(req : Request)
+ name() : String
}
class OrcSoldier {
+ OrcSoldier(handler : RequestHandler)
+ handleRequest(req : Request)
+ toString() : String
- LOGGER : Logger {static}
+ OrcSoldier()
+ canHandleRequest(req : Request) : boolean
+ getPriority() : int
+ handle(req : Request)
+ name() : String
}
class Request {
- handled : boolean
@@ -36,13 +45,11 @@ package com.iluwatar.chain {
+ markHandled()
+ toString() : String
}
abstract class RequestHandler {
- LOGGER : Logger {static}
- next : RequestHandler
+ RequestHandler(next : RequestHandler)
+ handleRequest(req : Request)
# printHandling(req : Request)
+ toString() : String {abstract}
interface RequestHandler {
+ canHandleRequest(Request) : boolean {abstract}
+ getPriority() : int {abstract}
+ handle(Request) {abstract}
+ name() : String {abstract}
}
enum RequestType {
+ COLLECT_TAX {static}
@@ -52,10 +59,9 @@ package com.iluwatar.chain {
+ values() : RequestType[] {static}
}
}
OrcKing --> "-chain" RequestHandler
RequestHandler --> "-next" RequestHandler
OrcKing --> "-handlers" RequestHandler
Request --> "-requestType" RequestType
OrcCommander --|> RequestHandler
OrcOfficer --|> RequestHandler
OrcSoldier --|> RequestHandler
OrcCommander ..|> RequestHandler
OrcOfficer ..|> RequestHandler
OrcSoldier ..|> RequestHandler
@enduml