Допустим, я хочу разработать абстрактную систему подсчета разделов в документе. Я разработал два класса, Документ и Раздел , в документе есть список разделов и метод их подсчета.
public abstract class Document {
List<Section> sections;
public void addSection(Section section) {
sections.Add(section);
}
public int sectionCount() {
return sections.count;
}
}
public abstract class Section {
public string Text;
}
Теперь я хочу использовать этот код в нескольких сценариях. Например, у меня есть Книги с главами. Книга будет подклассом документа, а глава - подклассом раздела. Оба класса будут содержать дополнительные поля и функции, не связанные с подсчетом секций.
Проблема, с которой я сейчас сталкиваюсь, состоит в том, что поскольку Document содержит разделы, а не главы, добавленные функциональные возможности Chapter для меня бесполезны, он может только добавить как раздел к Book.
Я читал об унынии, но действительно думаю, что это неправильный путь. Я думаю, может быть, я вообще ошибся.
Мой вопрос сводится к следующему: как мне спроектировать такую абстрактную систему, которая может быть повторно использована подклассами, и так ли это?