AccessDataProxy checks a user's permission level before delegating data retrieval to AccessData.
classDiagram
direction LR
class AccessDataLibrary {
<<interface>>
+getData(user, target)
}
class AccessData
class AccessDataProxy
class AccessDataApp
class User
AccessDataLibrary <|.. AccessData
AccessDataLibrary <|.. AccessDataProxy
AccessDataApp --> AccessDataLibrary : calls
AccessDataProxy --> AccessData : delegates when allowed
AccessDataProxy --> User : checks permission