Пытаясь придерживаться правила единой ответственности, мои классы стали выглядеть так
$productImage = new ProductImage(// holds all rules for product image only
new ImageFile( // makes sure given file is an image file
new ReadableFile( // checks given item is a readable file / permissions check
new UploadedFile( // validates given file is uploaded file
new FilePath( // validates given string is a valid file path
new Path( // validates for string to be a path
new NonEmptyString( // given string is not empty
'/tmp/xyzk7kjnbrukhg'
)
)
)
)
)
)
);
Это только один образец. На первый взгляд все это выглядит круто, поскольку предоставляет очень простые и проверяемые классы. но, как вы можете заметить, читабельность или удобство использования кода отстой. Мне нужно написать бесчисленное количество строк кода даже для обработки простой инициализации загруженного файла (как показано в приведенном выше коде).
Я начал чувствовать, что что-то не так, и я неправильно понял концепцию принципа единой ответственности.
Это то, как обрабатывается чистое ООП с единой ответственностью за каждый класс, или я ошибаюсь?