Ответ на ваш вопрос потребует глубокого изучения проблемной области.Я не думаю, что существует универсально действительный подход.
Однако есть некоторые паттерны, которые могут появиться.Одним из них (и, между прочим, одним из самых сложных для реализации) является шаблон типа / экземпляра.Исходя из моего опыта, я предполагаю, что типы элементов, которые должно отслеживать ваше приложение инвентаризации, не могут быть исправлены, и что пользователи вашей системы должны иметь возможность создавать и изменять типы в любое время.Это означает, что ваша система должна обрабатывать два уровня классификации, а не обычный;другими словами, ваша система будет иметь классы (в коде), экземпляры этих классов (во время выполнения) и экземпляры этих экземпляров (также во время выполнения).
Например, если вы создаетеКласс DocumentType в коде, ваши пользователи будут создавать его несколько раз, создавая объекты, такие как Report, Memo или Manual.Затем каждый отдельный отчет, которым управляет ваша система, будет экземпляром Report.И каждая отдельная записка будет экземпляром памятки.И т. Д.
Это легко реализовать, если подтипы (Отчет, Памятка, Руководство в моем примере) не несут свои собственные атрибуты или свои собственные связи с другими частями информации.Однако, если им нужны конкретные структуры данных (атрибуты и / или ассоциации), тогда проблема становится намного сложнее, потому что вам нужно имитировать полный объектно-ориентированный механизм типа / экземпляра в вашей системе.
Этоочень весело, хотя!