2019-12-07 18:03:49 +02:00

117 lines
2.7 KiB
Plaintext

@startuml
package com.iluwatar.flux.view {
class ContentView {
- LOGGER : Logger {static}
- content : Content
+ ContentView()
+ render()
+ storeChanged(store : Store)
}
class MenuView {
- LOGGER : Logger {static}
- selected : MenuItem
+ MenuView()
+ itemClicked(item : MenuItem)
+ render()
+ storeChanged(store : Store)
}
interface View {
+ render() {abstract}
+ storeChanged(Store) {abstract}
}
}
package com.iluwatar.flux.action {
abstract class Action {
- type : ActionType
+ Action(type : ActionType)
+ getType() : ActionType
}
enum ActionType {
+ CONTENT_CHANGED {static}
+ MENU_ITEM_SELECTED {static}
+ valueOf(name : String) : ActionType {static}
+ values() : ActionType[] {static}
}
enum Content {
+ COMPANY {static}
+ PRODUCTS {static}
- title : String
+ toString() : String
+ valueOf(name : String) : Content {static}
+ values() : Content[] {static}
}
class ContentAction {
- content : Content
+ ContentAction(content : Content)
+ getContent() : Content
}
class MenuAction {
- menuItem : MenuItem
+ MenuAction(menuItem : MenuItem)
+ getMenuItem() : MenuItem
}
enum MenuItem {
+ COMPANY {static}
+ HOME {static}
+ PRODUCTS {static}
- title : String
+ toString() : String
+ valueOf(name : String) : MenuItem {static}
+ values() : MenuItem[] {static}
}
}
package com.iluwatar.flux.app {
class App {
+ App()
+ main(args : String[]) {static}
}
}
package com.iluwatar.flux.store {
class ContentStore {
- content : Content
+ ContentStore()
+ getContent() : Content
+ onAction(action : Action)
}
class MenuStore {
- selected : MenuItem
+ MenuStore()
+ getSelected() : MenuItem
+ onAction(action : Action)
}
abstract class Store {
- views : List<View>
+ Store()
# notifyChange()
+ onAction(Action) {abstract}
+ registerView(view : View)
}
}
package com.iluwatar.flux.dispatcher {
class Dispatcher {
- instance : Dispatcher {static}
- stores : List<Store>
- Dispatcher()
- dispatchAction(action : Action)
+ getInstance() : Dispatcher {static}
+ menuItemSelected(menuItem : MenuItem)
+ registerStore(store : Store)
}
}
MenuAction --> "-menuItem" MenuItem
Action --> "-type" ActionType
MenuStore --> "-selected" MenuItem
Dispatcher --> "-instance" Dispatcher
ContentView --> "-content" Content
Dispatcher --> "-stores" Store
MenuView --> "-selected" MenuItem
Store --> "-views" View
ContentStore --> "-content" Content
ContentAction --> "-content" Content
ContentAction --|> Action
MenuAction --|> Action
ContentStore --|> Store
MenuStore --|> Store
ContentView ..|> View
MenuView ..|> View
@enduml