Из того, что я понял шаблон адаптера.это полезно при работе с кодами третьей части, такими как API, которые могут / могут подвергаться изменениям в любое время, и я могу сломать ваш код, если он будет реализован напрямую.Например: при использовании Paypal на вашем сайте для оплаты online.let предполагается, что Paypal использует метод payMoney () для оплаты.и через некоторое время они решают изменить метод на что-то еще, скажем, sendMoney ().Это может привести к поломке вашего кода, если он будет реализован напрямую, с использованием шаблона проектирования адаптера это можно решить следующим образом:
код третьей части => Paypal
class Paypal {
public function __construct(){
// their codes
}
public function payMoney($amount){
// the logic of validating
// the $amount variables and do the payment
}
}
, поэтому реализуйте его непосредственно в коде, как показано ниже. Код будет нарушен
$pay = new Paypal();
$pay->payMoney(200);
. Использование адаптера сэкономит количество часов и сложную работу по обновлению кода от payMoney () до sendMoney () в каждомгде были реализованы сценарии API.Адаптер включит обновление в одном месте и все.Давай посмотрим.
class paypalAdapter {
private $paypal;
// Paypal object into construct and check if it's pa
// Paypal object via type hint
public function __construct(PayPal $paypal) {
$this->paypal = $paypal;
}
// call the Paypal method in your own
//custom method that is to be
// implemented directly into your code
public function pay($amount) {
$this->paypal->payMoney($amount);
}
}
так что это так, и вы можете пойти и использовать PaypalAdater непосредственно в код следующим образом:
$pay = new PaypalAdapter(new Paypal);
$pay->pay(200);
Так что в будущем, когдаПоставщик (Paypal) решает использовать sendMoney вместо payMoney. Чтобы открыть класс PaypalAdapter, выполните следующие действия в методе pay ($ amount):
// SEE THIS METHOD ABOVE TO OBSERVE CHANGES
// FROM $this->paypal->payMoney($amount);
// TO $this->paypal->senMoney($amount);
public function pay($amount) {
$this->paypal->sendMoney($amount);
}
После этого незначительного изменения в одномместо, все работает хорошо, как и раньше.