@startuml package com.iluwatar.parameter.object { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } class ParameterObject { + DEFAULT_SORT_BY : String {static} + DEFAULT_SORT_ORDER : SortOrder {static} - sortBy : String - sortOrder : SortOrder - type : String - ParameterObject(builder : Builder) + getSortBy() : String + getSortOrder() : SortOrder + getType() : String + newBuilder() : Builder {static} + setSortBy(sortBy : String) + setSortOrder(sortOrder : SortOrder) + setType(type : String) } class Builder { - sortBy : String - sortOrder : SortOrder - type : String - Builder() + build() : ParameterObject + sortBy(sortBy : String) : Builder + sortOrder(sortOrder : SortOrder) : Builder + withType(type : String) : Builder } class SearchService { + SearchService() - getQuerySummary(type : String, sortBy : String, sortOrder : SortOrder) : String + search(parameterObject : ParameterObject) : String + search(type : String, sortBy : String) : String + search(type : String, sortOrder : SortOrder) : String } enum SortOrder { + ASC {static} + DESC {static} - value : String + getValue() : String + valueOf(name : String) : SortOrder {static} + values() : SortOrder[] {static} } } Builder --> "-sortOrder" SortOrder Builder ..+ ParameterObject ParameterObject --> "-DEFAULT_SORT_ORDER" SortOrder @enduml