@startuml package com.iluwatar.featuretoggle.pattern { interface Service { + getWelcomeMessage(User) : String {abstract} + isEnhanced() : boolean {abstract} } } package com.iluwatar.featuretoggle.user { class User { - name : String + User(name : String) + toString() : String } class UserGroup { - freeGroup : List {static} - paidGroup : List {static} + UserGroup() + addUserToFreeGroup(user : User) {static} + addUserToPaidGroup(user : User) {static} + isPaid(user : User) : boolean {static} } } package com.iluwatar.featuretoggle.pattern.tieredversion { class TieredFeatureToggleVersion { + TieredFeatureToggleVersion() + getWelcomeMessage(user : User) : String + isEnhanced() : boolean } } package com.iluwatar.featuretoggle.pattern.propertiesversion { class PropertiesFeatureToggleVersion { - isEnhanced : boolean + PropertiesFeatureToggleVersion(properties : Properties) + getWelcomeMessage(user : User) : String + isEnhanced() : boolean } } package com.iluwatar.featuretoggle { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } } UserGroup --> "-freeGroup" User PropertiesFeatureToggleVersion ..|> Service TieredFeatureToggleVersion ..|> Service @enduml