I am curious to know what others are doing or use when building an application that supports many third party integrations. As an example, we may support multiple payment providers, (PayPal, Stripe, Square) etc... Depending on which option is set in the config file or database, it will choose a different path through the application. There are different routes or controllers based on the selection so I am curios if there is a best practice on how to achieve this. Trying to keep the DRY principle in place as much as possible.