Java-дизайн для ресурсов с ResourceTypes
Я работаю над приложением для управления задачами, которое использует ResourceManager для управления всеми резервированиями различных ресурсов, каждый со своим ResourceType. На данный момент существует 5 видов ResourceTypes, и они не будут регулярно меняться, но это может произойти.
Мой вопрос заключается в том, как лучше всего подойти к дизайну для этого с точки зрения ОО-дизайна, принципов GRASP и общей возможности сопровождения кода:
Вариант A: отдельные классы Resource и ResourceType + класс ResourceManager сохранят несколько карт ресурсов для каждого типа ресурса
Вариант B: отдельный класс Resource + ResourceType class будет содержать список соответствующих ему ресурсов.
Мне кажется, что с вариантом B будет более высокая сплоченность в отношении ресурсов и их типов, но я ищу определенные сценарии (рефакторинг), в которых один вариант окажется лучше другого?
1 ответ
Это позволило бы представлять типы в виде классов и добавлять их во время выполнения.
Вы также можете иметь ResourceFactory, которая решает, какой ресурс сделать во время выполнения. Затем вы можете использовать фабрику, чтобы получить объект ресурса для передачи в addResource().
Преимущество этого дизайна в том, что ResourceManager отделен от конкретных типов ресурсов, которыми он управляет. Чтобы добавить новый тип ресурса, просто добавьте новый класс и обновите фабричный класс.