69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								@startuml
							 | 
						||
| 
								 | 
							
								package com.iluwatar.mediator {
							 | 
						||
| 
								 | 
							
								  enum Action {
							 | 
						||
| 
								 | 
							
								    + ENEMY {static}
							 | 
						||
| 
								 | 
							
								    + GOLD {static}
							 | 
						||
| 
								 | 
							
								    + HUNT {static}
							 | 
						||
| 
								 | 
							
								    + NONE {static}
							 | 
						||
| 
								 | 
							
								    + TALE {static}
							 | 
						||
| 
								 | 
							
								    - description : String
							 | 
						||
| 
								 | 
							
								    - title : String
							 | 
						||
| 
								 | 
							
								    + getDescription() : String
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								    + valueOf(name : String) : Action {static}
							 | 
						||
| 
								 | 
							
								    + values() : Action[] {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class App {
							 | 
						||
| 
								 | 
							
								    + App()
							 | 
						||
| 
								 | 
							
								    + main(args : String[]) {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Hobbit {
							 | 
						||
| 
								 | 
							
								    + Hobbit()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Hunter {
							 | 
						||
| 
								 | 
							
								    + Hunter()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface Party {
							 | 
						||
| 
								 | 
							
								    + act(PartyMember, Action) {abstract}
							 | 
						||
| 
								 | 
							
								    + addMember(PartyMember) {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class PartyImpl {
							 | 
						||
| 
								 | 
							
								    - members : List<PartyMember>
							 | 
						||
| 
								 | 
							
								    + PartyImpl()
							 | 
						||
| 
								 | 
							
								    + act(actor : PartyMember, action : Action)
							 | 
						||
| 
								 | 
							
								    + addMember(member : PartyMember)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface PartyMember {
							 | 
						||
| 
								 | 
							
								    + act(Action) {abstract}
							 | 
						||
| 
								 | 
							
								    + joinedParty(Party) {abstract}
							 | 
						||
| 
								 | 
							
								    + partyAction(Action) {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  abstract class PartyMemberBase {
							 | 
						||
| 
								 | 
							
								    - LOGGER : Logger {static}
							 | 
						||
| 
								 | 
							
								    # party : Party
							 | 
						||
| 
								 | 
							
								    + PartyMemberBase()
							 | 
						||
| 
								 | 
							
								    + act(action : Action)
							 | 
						||
| 
								 | 
							
								    + joinedParty(party : Party)
							 | 
						||
| 
								 | 
							
								    + partyAction(action : Action)
							 | 
						||
| 
								 | 
							
								    + toString() : String {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Rogue {
							 | 
						||
| 
								 | 
							
								    + Rogue()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Wizard {
							 | 
						||
| 
								 | 
							
								    + Wizard()
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								PartyImpl -->  "-members" PartyMember
							 | 
						||
| 
								 | 
							
								PartyMemberBase -->  "-party" Party
							 | 
						||
| 
								 | 
							
								Hobbit --|> PartyMemberBase 
							 | 
						||
| 
								 | 
							
								Hunter --|> PartyMemberBase 
							 | 
						||
| 
								 | 
							
								PartyImpl ..|> Party 
							 | 
						||
| 
								 | 
							
								PartyMemberBase ..|> PartyMember 
							 | 
						||
| 
								 | 
							
								Rogue --|> PartyMemberBase 
							 | 
						||
| 
								 | 
							
								Wizard --|> PartyMemberBase 
							 | 
						||
| 
								 | 
							
								@enduml
							 |