117 lines
2.7 KiB
Plaintext
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 |