Для начала давайте разберемся что такое модуль, уж больно
много значений у этого слова. Даже в контексте разработки.
То что вы описали следует из:
- принцип единой ответственности - выделить на каждый сценарий проведения операции по объекту
- полиморфизм - объеденение разных объектов имеющих различную реализацию под одним интерфейсом
- инверсия зависимостей - код приложения будет зависеть от интерфейса (абстракции), а подсовывать ему реализацию мы будем исходя из контекста.
И да.... вот этот момент:
При помощи reflection в php можно было бы определять количество и качество этих модулей.
Немного непонятно причем тут Reflections и причем тут качество модулей.
Для описанной вами задачи уже сущестует масса поведенческих паттернов. Конкретно тут применим паттерн стратегия.