@startuml Target <-- Client Target <|-- ClassAdapter Target <|-- ObjectAdapter Adaptee <|-- ClassAdapter Adaptee <--o ObjectAdapter interface Target { {abstract} +Request() } class Adaptee { +SpecificRequest() } class ClassAdapter { +Request() } class ObjectAdapter { -anAdaptee +Request() } note bottom of ObjectAdapter ObjectAdapter::Request() { return anAdaptee.SpecificRequest(); } end note note bottom of ClassAdapter ClassAdapter::Request() { return Adaptee::SpecificRequest(); } end note hide empty attributes hide empty methods @enduml