Типичный шаблон для нескольких поставщиков / поставщиков? - PullRequest
1 голос
/ 28 января 2010

Я создаю программный продукт, в котором клиент сможет настроить свою систему для использования любого из 3 или 4 поставщиков предварительно интегрированных платежных шлюзов. (например, PayPal, Authorize.net и т. д.).

Клиент войдет в приложение, перейдет к настройкам, выберет поставщика, с которым он имеет учетную запись, введите соответствующую информацию об учетной записи и сохранит. Затем и обработанные платежные транзакции будут проходить через этот конкретный API поставщика платежного шлюза.

Я ищу шаблон, который можно использовать для отвлечения от реальной функции оплаты. То есть, когда пользователь совершает платеж, создается экземпляр объекта Payment, затем вызывается Payment-> validate (), затем вызывается Payment-> save (). Я хочу, чтобы этот класс Payment абстрагировался от информации о том, какой конкретный поставщик будет использоваться в серверной части.

Таким образом, этот класс Payment должен быть в состоянии определить настроенного поставщика платежного шлюза (выполнено, не обращаясь за помощью), затем создать экземпляр объекта этого конкретного класса платежного шлюза и вызвать соответствующие методы.

Итак, я спрашиваю: есть ли типичный шаблон дизайна для такого типа вещей, как он называется, и есть ли у вас ссылки на хороший материал по этому вопросу. Я не ищу информацию типа «помоги мне написать этот код», я ищу информацию типа «научи человека ловить рыбу»: -)

Спасибо.

1 Ответ

1 голос
/ 28 января 2010

Я бы использовал шаблон стратегии из книги GoF. Вместо Payment-> save () вы пишете сервис AbstractPaymentService, который обеспечивает валидацию (оплата) и сохранение (оплата). Для каждого типа платежного сервиса вы затем внедряете AbstractPaymentService (например, PaypalPaymentService).

...