Как разделить классы, используя композицию и принцип ответственности?
У меня есть класс документов:
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 и поместить все методы внутри него? Затем использовать этот класс в классе документа как внедрение зависимостей?