@startuml package com.iluwatar.separatedinterface { class App { - LOGGER : Logger {static} + PRODUCT_COST : double {static} + App() + main(args : String[]) {static} } } package com.iluwatar.separatedinterface.taxes { class DomesticTaxCalculator { + TAX_PERCENTAGE : double {static} + DomesticTaxCalculator() + calculate(amount : double) : double } class ForeignTaxCalculator { + TAX_PERCENTAGE : double {static} + ForeignTaxCalculator() + calculate(amount : double) : double } } package com.iluwatar.separatedinterface.invoice { class InvoiceGenerator { - amount : double - taxCalculator : TaxCalculator + InvoiceGenerator(amount : double, taxCalculator : TaxCalculator) + getAmountWithTax() : double } interface TaxCalculator { + calculate(double) : double {abstract} } } InvoiceGenerator --> "-taxCalculator" TaxCalculator DomesticTaxCalculator ..|> TaxCalculator ForeignTaxCalculator ..|> TaxCalculator @enduml