Итак, скажем, у меня есть строка для анализа с заданным форматом, которая отображается в древовидную структуру данных. Строка в некотором роде похожа на путь к папке, а структура похожа на файловую структуру, за исключением того, что она имеет некоторые правила
так что для
что-то @ cat1 @ otherSomething
вы бы получили
/something/cat1/otherSomething
за что-то @ cat2 @ otherSomething
вы получите
/something/cat2/otherSomething
другие примеры
/OtherThing/cat1/otherSomething/Blah
/OtherThing/cat4/otherSomething
Где что-то, cat1, otherSomethign и т. Д. Являются своего рода экземплярами ICategory
Существуют определенные правила, которые контролируют, какие подкатегории являются действительными, а какие подкатегориями являются неприемлемыми, на данный момент я рассматриваю сложную иерархию объектов, но я знаю, что это не гибкое решение, я предпочел бы, чтобы категории были немного более общий, но опять же, поскольку существуют правила о том, что может быть дальше, я не уверен, как это сделать.
Примером правила может быть: OtherThing может иметь только подкатегории cat1 и cat4 (все остальное недопустимо)
Можно было бы использовать какой-то подход, основанный на соглашении, для создания экземпляра определенного класса с учетом подраздела строки (например, cat4), но он кажется слишком сложным, я все слышу
Спасибо