Вот как я понимаю шаблон проектирования адаптерадаптер шаблон дизайна объяснил
У вас есть наследие платежной системы:
class LegacyPaymentSystem {
public function pay($amount) {
}
public function refund() {
}
}
Вы реализовать новую систему оплаты:
class PaymentSystem {
public function __construct() {
}
public function payAmount($amount, $currency) {
}
public function refund($payment_id) {
}
}
Вы используете адаптер для соединения двух. Иногда вы хотите использовать старую платежную систему.
class PaymentSystemAdapter extends PaymentSystem {
public function __construct($legacyPaymentSystem) {
$this->legacyPaymentSystem = $legacyPaymentSystem;
}
public function payAmount($amount, $currency) {
$this->legacyPaymentSystem->pay($amount);
}
}
Теперь клиент может сделать:
class Client {
public function process($amount, $currency) {
$legacyPaymentSystem = new LegacyPaymentSystem();
$adapter = new PaymentSystemAdapter($legacyPaymentSystem);
$this->pay($adapter, $amount, $currency);
}
public function pay(PaymentSystem $paymentSystem, $amount, $currency) {
$payementSystem->payAmount($amount, $currency);
}
}
У меня есть вопрос, почему? Почему мы не можем просто позвонить в унаследованную систему платежей напрямую?
Адаптер Узор действительно только о том, чтобы интерфейс одного класса, совместимого с объектом или системой, которая была разработана в а другой контракт или модель. Адаптер служит слоем между двумя объектами, переводя язык одного в другой и обратно. – scottb