| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | @startuml | 
					
						
							|  |  |  | package com.iluwatar.flux.view { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class ContentView { | 
					
						
							|  |  |  |     - LOGGER : Logger {static} | 
					
						
							|  |  |  |     - content : Content | 
					
						
							|  |  |  |     + ContentView() | 
					
						
							|  |  |  |     + render() | 
					
						
							|  |  |  |     + storeChanged(store : Store) | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  |   class MenuView { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     - LOGGER : Logger {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     - selected : MenuItem | 
					
						
							|  |  |  |     + MenuView() | 
					
						
							|  |  |  |     + itemClicked(item : MenuItem) | 
					
						
							|  |  |  |     + render() | 
					
						
							|  |  |  |     + storeChanged(store : Store) | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   interface View { | 
					
						
							|  |  |  |     + render() {abstract} | 
					
						
							|  |  |  |     + storeChanged(Store) {abstract} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.flux.action { | 
					
						
							|  |  |  |   abstract class Action { | 
					
						
							|  |  |  |     - type : ActionType | 
					
						
							|  |  |  |     + Action(type : ActionType) | 
					
						
							|  |  |  |     + getType() : ActionType | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   enum ActionType { | 
					
						
							|  |  |  |     + CONTENT_CHANGED {static} | 
					
						
							|  |  |  |     + MENU_ITEM_SELECTED {static} | 
					
						
							|  |  |  |     + valueOf(name : String) : ActionType {static} | 
					
						
							|  |  |  |     + values() : ActionType[] {static} | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   enum Content { | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + COMPANY {static} | 
					
						
							|  |  |  |     + PRODUCTS {static} | 
					
						
							|  |  |  |     - title : String | 
					
						
							|  |  |  |     + toString() : String | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     + valueOf(name : String) : Content {static} | 
					
						
							|  |  |  |     + values() : Content[] {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class ContentAction { | 
					
						
							|  |  |  |     - content : Content | 
					
						
							|  |  |  |     + ContentAction(content : Content) | 
					
						
							|  |  |  |     + getContent() : Content | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class MenuAction { | 
					
						
							|  |  |  |     - menuItem : MenuItem | 
					
						
							|  |  |  |     + MenuAction(menuItem : MenuItem) | 
					
						
							|  |  |  |     + getMenuItem() : MenuItem | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   enum MenuItem { | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + COMPANY {static} | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     + HOME {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + PRODUCTS {static} | 
					
						
							|  |  |  |     - title : String | 
					
						
							|  |  |  |     + toString() : String | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     + valueOf(name : String) : MenuItem {static} | 
					
						
							|  |  |  |     + values() : MenuItem[] {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.flux.app { | 
					
						
							|  |  |  |   class App { | 
					
						
							|  |  |  |     + App() | 
					
						
							|  |  |  |     + main(args : String[]) {static} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | package com.iluwatar.flux.store { | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   class ContentStore { | 
					
						
							|  |  |  |     - content : Content | 
					
						
							|  |  |  |     + ContentStore() | 
					
						
							|  |  |  |     + getContent() : Content | 
					
						
							|  |  |  |     + onAction(action : Action) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class MenuStore { | 
					
						
							|  |  |  |     - selected : MenuItem | 
					
						
							|  |  |  |     + MenuStore() | 
					
						
							|  |  |  |     + getSelected() : MenuItem | 
					
						
							|  |  |  |     + onAction(action : Action) | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   abstract class Store { | 
					
						
							|  |  |  |     - views : List<View> | 
					
						
							|  |  |  |     + Store() | 
					
						
							|  |  |  |     # notifyChange() | 
					
						
							|  |  |  |     + onAction(Action) {abstract} | 
					
						
							|  |  |  |     + registerView(view : View) | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | 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) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | MenuAction -->  "-menuItem" MenuItem | 
					
						
							|  |  |  | MenuStore -->  "-selected" MenuItem | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | Action -->  "-type" ActionType | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | Dispatcher -->  "-instance" Dispatcher | 
					
						
							|  |  |  | ContentView -->  "-content" Content | 
					
						
							|  |  |  | Dispatcher -->  "-stores" Store | 
					
						
							|  |  |  | MenuView -->  "-selected" MenuItem | 
					
						
							|  |  |  | Store -->  "-views" View | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | ContentStore -->  "-content" Content | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | ContentAction -->  "-content" Content | 
					
						
							|  |  |  | ContentAction --|> Action  | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | MenuAction --|> Action  | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | ContentStore --|> Store  | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | MenuStore --|> Store  | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | ContentView ..|> View  | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | MenuView ..|> View  | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | @enduml |