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

У меня есть класс документов:

class Document {
     versions: Version[] = [];
}

Он имеет композицию в виде массива версий.

Предположим, мне нужно получить все версии документов:

class Document {
     versions: Version[] = [];

     getVersions(): Version[] {
         return this.versions;
     }
}

И тогда мне нужно получить последнюю версию документа:

class Document {
         versions: Version[] = [];

         getVersions(): Version[] {
             return this.versions;
         }

          sort(versions) {
             /* Sort logic */
          }

          formatVersions(versions) {}

          getLastVersion(){
             return this.formatVersions(this.sort(this.versions)).pop();
          }
    }

Правильно ли, когда класс Document отвечает за документ и его версии (форматирование, сортировка, получение последней)?

Какие принципы ООП это нарушает?

Что если создать другой класс VersionHandler и поместить все методы внутри него? Затем использовать этот класс в классе документа как внедрение зависимостей?


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