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 |