Я не уверен, что проблема такого рода решается с помощью шаблона или шаблонов как таковых. В некоторой степени это «просто дизайн» - вы строите дизайн и обнаруживаете связи и точки сгибания, в которых (например) помогают ОО-методы и в этот момент вступают в игру паттерны.
В течение многих лет я наблюдал множество попыток решить подобные проблемы с помощью «Не написания кода». То есть мы находим какой-то способ превратить бизнес-логику в нечто более податливое, чем код. Так что, возможно, вы просто выводите правила оплаты:
Thinking 101 Standard $100 Alumni $50 Ex-Military $0
Hard Sums Standard $500 Alumni $100 Ex-Military $0
Теперь изменения в этих правилах - это изменение конфигурации, а не изменение кода. Этот вид управляемых данными appraoch, вероятно, лучше, чем код.
Затем вы хотите экстернализировать логику, и поэтому появляются правила.
И внешняя логика обработки и, следовательно, мы получаем BPEL.
Я вижу успех со всеми этими подходами, но ... фактически вы где-то вывели логику, поэтому остаются две проблемы:
- Насколько легко вы можете проверить эту логику? Вы, вероятно, не сократили объем необходимого тестирования.
- Насколько легко вы можете управлять жизненным циклом этой внешней логики? Можете ли вы опробовать его, возможно, для небольшого числа клиентов, откатить его обратно, если он окажется неправильным? Разрешить одновременное использование нескольких версий?
Это все еще программное обеспечение, это действительно замаскированный код.