Какой подход я могу использовать для расширения группы классов, которые включают в себя реализованные методы? (см. описание для более подробной информации) - PullRequest
1 голос
/ 04 мая 2010

Я хочу создать расширяемый пакет, который я пишу, который имеет классы Topology, Node & Relationship. Идея состоит в том, что эти базовые классы будут иметь различные методы, необходимые для базовых методов обхода графа и т. Д. Затем я хотел бы иметь возможность использовать это повторно, расширяя пакет.

Например, в базовых требованиях может быть указано Отношение с parentNode и childNode. Топология будет иметь список узлов и список отношений. В топологии должны быть такие методы, как FindChildren (int глубина).

Тогда использование будет расширять их так, чтобы можно было добавить дополнительные атрибуты для Узла и Отношений и т. Д.

ВОПРОС - Каков наилучший подход для упаковки и представления классов / методов базового уровня? (это похоже на пользовательскую коллекцию, но с несколькими аспектами). Будут ли в игру вступать следующие понятия:

  1. Интерфейсы - было бы неплохо иметь ITopology, INode и т. Д., Или это не требуется, поскольку пользователь все равно будет расширять эти классы?
  2. Абстрактные классы - будут ли базовые классы абстрактными классами
  3. Custom Generic Collection - поможет ли какой-то подход с использованием этой концепции (но как это будет работать, если есть 3 разных класса)

1 Ответ

1 голос
/ 04 мая 2010

Я бы сказал, абстрактные базовые классы, реализующие интерфейс, по крайней мере, с одним классом реализации для каждого базового класса.Пользователи могут выбрать расширение базового класса или продолжить работу с рабочим классом реализации или, кроме того, они могут просто реализовать требуемый интерфейс полностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...