SuperSet to Subset Classes без нарушения устаревшего кода - PullRequest
0 голосов
/ 10 декабря 2010

Видя, что я действительно новичок в ООП, Этого можно было бы избежать, если бы я знал лучше. Я начал примерно год с моей Библиотекой классов и сделал так, чтобы Класс называл ее Tree и до сих пор класс Tree работал нормально, он делает именно то, что мне нужно.

Хорошо, теперь я заметил, что у меня есть различные типы дерева

Я хотел бы переместить некоторые функции дерева в его собственное пространство имен и создать новые для этих других деревьев, Как это сделать, не нарушая системы, которые уже реализуют текущее Дерево?

Есть ли способ, которым я могу "переадресовывать" звонки с существующих на новые

1 Ответ

0 голосов
/ 10 декабря 2010

В зависимости от новых типов деревьев у вас может быть SuperTree, которое содержит экземпляр Tree для выполнения некоторых из его функций, но предоставляет дополнительные функциональные возможности, уникальные для SuperTree.Вы выполняете переадресацию вызова путем написания методов-обёрток для функций, которые вы хотите напрямую обработать внутренним экземпляром Tree.

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

Подумайте об этом так:

  • Зданиеможет содержать стальную раму и опирается на нее, но это не тип стальной рамы.

  • Отель - это своего рода здание, и поэтому в нем есть то, что есть в зданиях, например дверии windows.

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

...