вопрос по SOLID на коде

Покажу простой rest api псевдо код:

UserController:
    fn all():
        return this.userService.all().array()
       
    fn single(id):
        return this.userService.single(id).array()
        
        
UserService:
    fn all(): UserServiceDTOCollection
        users = this.repo.all()
        users.convert(UserServiceDTO.class)
        
        return users
        
    fn single(id): UserServiceDTO
        user = this.repo.single(id)
        user.convert(UserServiceDTO.class)
        
        return user
        
        
UserRepository:
    fn all(): UserRepositoryDTOCollection
        ...
        
    fn single(id): UserRepositoryDTO

Вот мой код, если кратно тут 3 слоя: UserController, UserService, UserRepository, все отделены DTO'шками.

Как по принципам солид добавлять/удалять/менять контроллеры?

Как вижу я:

Добавлять/изменять - UserController2 extends UserController и DI:container(UserControllerInterface::class, new UserController2)

Удалять - тут уже в route.php просто удалять путь

Если поступила задача юзеру добавть новое поле, например Avatar, то как это сделать?

Как я вижу:

создаю UserResitoryWithAvatar, UserRepositoryAvatarDTO, UserRepositoryAvatarDTOCollection, 
тоже на сервис UserServiceWithAvatar, UserServiceWithAvatarDTO, UserServiceWithAvatarDTOCollection 

и DI:container(UserServiceInterface::class, new UserServiceWithAvatar), 

DI:container(UserREpositoryWithAvatarInterface::class, new UserREpositoryWithAvatar)

Ответы (0 шт):