@startuml package com.iluwatar.pipeline { class App { + App() + main(args : String[]) {static} } ~class ConvertToCharArrayHandler { - LOGGER : Logger {static} ~ ConvertToCharArrayHandler() + process(input : String) : char[] } ~interface Handler { + process(I) : O {abstract} } ~class Pipeline { - currentHandler : Handler ~ Pipeline(currentHandler : Handler) ~ addHandler(newHandler : Handler) : Pipeline ~ execute(input : I) : O } ~class RemoveAlphabetsHandler { - LOGGER : Logger {static} ~ RemoveAlphabetsHandler() + process(input : String) : String } ~class RemoveDigitsHandler { - LOGGER : Logger {static} ~ RemoveDigitsHandler() + process(input : String) : String } } Pipeline --> "-currentHandler" Handler ConvertToCharArrayHandler ..|> Handler RemoveAlphabetsHandler ..|> Handler RemoveDigitsHandler ..|> Handler @enduml