Я создаю программный продукт, в котором клиент сможет настроить свою систему для использования любого из 3 или 4 поставщиков предварительно интегрированных платежных шлюзов. (например, PayPal, Authorize.net и т. д.).
Клиент войдет в приложение, перейдет к настройкам, выберет поставщика, с которым он имеет учетную запись, введите соответствующую информацию об учетной записи и сохранит. Затем и обработанные платежные транзакции будут проходить через этот конкретный API поставщика платежного шлюза.
Я ищу шаблон, который можно использовать для отвлечения от реальной функции оплаты. То есть, когда пользователь совершает платеж, создается экземпляр объекта Payment, затем вызывается Payment-> validate (), затем вызывается Payment-> save (). Я хочу, чтобы этот класс Payment абстрагировался от информации о том, какой конкретный поставщик будет использоваться в серверной части.
Таким образом, этот класс Payment должен быть в состоянии определить настроенного поставщика платежного шлюза (выполнено, не обращаясь за помощью), затем создать экземпляр объекта этого конкретного класса платежного шлюза и вызвать соответствующие методы.
Итак, я спрашиваю: есть ли типичный шаблон дизайна для такого типа вещей, как он называется, и есть ли у вас ссылки на хороший материал по этому вопросу. Я не ищу информацию типа «помоги мне написать этот код», я ищу информацию типа «научи человека ловить рыбу»: -)
Спасибо.