Паттерн "Прокси"
Паттерн Прокси (структурный паттерн) может быть полезен, когда нам нужно управлять доступом к котику объекту, добавлять дополнительную логику при доступе к нему или делать отложенную инициализацию объекта (в котлин есть by lazy). Предположим, у нас есть класс котика, который умеет мяукать. Мы можем создать прокси-класс CatProxy, который будет добавлять дополнительную логику. Тут же можно контролировать доступ к котику. Например, мяукать, только если пользователь авторизован и является хозяином котика...