88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								@startuml
							 | 
						||
| 
								 | 
							
								package com.iluwatar.intercepting.filter {
							 | 
						||
| 
								 | 
							
								  abstract class AbstractFilter {
							 | 
						||
| 
								 | 
							
								    - next : Filter
							 | 
						||
| 
								 | 
							
								    + AbstractFilter()
							 | 
						||
| 
								 | 
							
								    + AbstractFilter(next : Filter)
							 | 
						||
| 
								 | 
							
								    + execute(order : Order) : String
							 | 
						||
| 
								 | 
							
								    + getLast() : Filter
							 | 
						||
| 
								 | 
							
								    + getNext() : Filter
							 | 
						||
| 
								 | 
							
								    + setNext(filter : Filter)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class AddressFilter {
							 | 
						||
| 
								 | 
							
								    + AddressFilter()
							 | 
						||
| 
								 | 
							
								    + execute(order : Order) : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class App {
							 | 
						||
| 
								 | 
							
								    + App()
							 | 
						||
| 
								 | 
							
								    + main(args : String[]) {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class ContactFilter {
							 | 
						||
| 
								 | 
							
								    + ContactFilter()
							 | 
						||
| 
								 | 
							
								    + execute(order : Order) : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class DepositFilter {
							 | 
						||
| 
								 | 
							
								    + DepositFilter()
							 | 
						||
| 
								 | 
							
								    + execute(order : Order) : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface Filter {
							 | 
						||
| 
								 | 
							
								    + execute(Order) : String {abstract}
							 | 
						||
| 
								 | 
							
								    + getLast() : Filter {abstract}
							 | 
						||
| 
								 | 
							
								    + getNext() : Filter {abstract}
							 | 
						||
| 
								 | 
							
								    + setNext(Filter) {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class FilterChain {
							 | 
						||
| 
								 | 
							
								    - chain : Filter
							 | 
						||
| 
								 | 
							
								    + FilterChain()
							 | 
						||
| 
								 | 
							
								    + addFilter(filter : Filter)
							 | 
						||
| 
								 | 
							
								    + execute(order : Order) : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class FilterManager {
							 | 
						||
| 
								 | 
							
								    - filterChain : FilterChain
							 | 
						||
| 
								 | 
							
								    + FilterManager()
							 | 
						||
| 
								 | 
							
								    + addFilter(filter : Filter)
							 | 
						||
| 
								 | 
							
								    + filterRequest(order : Order) : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class NameFilter {
							 | 
						||
| 
								 | 
							
								    + NameFilter()
							 | 
						||
| 
								 | 
							
								    + execute(order : Order) : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Order {
							 | 
						||
| 
								 | 
							
								    - address : String
							 | 
						||
| 
								 | 
							
								    - contactNumber : String
							 | 
						||
| 
								 | 
							
								    - depositNumber : String
							 | 
						||
| 
								 | 
							
								    - name : String
							 | 
						||
| 
								 | 
							
								    - orderItem : String
							 | 
						||
| 
								 | 
							
								    + Order()
							 | 
						||
| 
								 | 
							
								    + Order(name : String, contactNumber : String, address : String, depositNumber : String, order : String)
							 | 
						||
| 
								 | 
							
								    + getAddress() : String
							 | 
						||
| 
								 | 
							
								    + getContactNumber() : String
							 | 
						||
| 
								 | 
							
								    + getDepositNumber() : String
							 | 
						||
| 
								 | 
							
								    + getName() : String
							 | 
						||
| 
								 | 
							
								    + getOrderItem() : String
							 | 
						||
| 
								 | 
							
								    + setAddress(address : String)
							 | 
						||
| 
								 | 
							
								    + setContactNumber(contactNumber : String)
							 | 
						||
| 
								 | 
							
								    + setDepositNumber(depositNumber : String)
							 | 
						||
| 
								 | 
							
								    + setName(name : String)
							 | 
						||
| 
								 | 
							
								    + setOrderItem(order : String)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class OrderFilter {
							 | 
						||
| 
								 | 
							
								    + OrderFilter()
							 | 
						||
| 
								 | 
							
								    + execute(order : Order) : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  ~class DListener {
							 | 
						||
| 
								 | 
							
								    ~ DListener()
							 | 
						||
| 
								 | 
							
								    + actionPerformed(e : ActionEvent)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								AbstractFilter -->  "-next" Filter
							 | 
						||
| 
								 | 
							
								DListener --+ Target
							 | 
						||
| 
								 | 
							
								FilterManager -->  "-filterChain" FilterChain
							 | 
						||
| 
								 | 
							
								FilterChain -->  "-chain" Filter
							 | 
						||
| 
								 | 
							
								AbstractFilter ..|> Filter 
							 | 
						||
| 
								 | 
							
								AddressFilter --|> AbstractFilter 
							 | 
						||
| 
								 | 
							
								ContactFilter --|> AbstractFilter 
							 | 
						||
| 
								 | 
							
								DepositFilter --|> AbstractFilter 
							 | 
						||
| 
								 | 
							
								NameFilter --|> AbstractFilter 
							 | 
						||
| 
								 | 
							
								OrderFilter --|> AbstractFilter 
							 | 
						||
| 
								 | 
							
								@enduml
							 |