دیزاین پترن Adapter از دسته ساختاری در مجموعه ۲۳ پترن مشهور Gang of Four است. دو رابط ناسازگار را به یک قرارداد قابل استفاده برای برنامه تبدیل میکند.
سناریوی واقعی در فروشگاه
هر شرکت حملونقل پاسخ متفاوتی برای قیمت ارسال دارد. آداپتر این تفاوت را به ShippingQuote مشترک تبدیل میکند.
نمونه در PHP
final class CourierAdapter implements ShippingQuoteService {
public function __construct(private LegacyCourierApi $api) {}
public function quote(string $city): int {
return $this->api->getRate(['destination' => $city])['total'];
}
}
نمونه در پایتون
class CourierAdapter:
def __init__(self, legacy_api): self.api = legacy_api
def quote(self, city):
return self.api.get_rate({'destination': city})['total']
چه زمانی مناسب نیست؟
آداپتر قرار نیست قوانین متفاوت کسبوکار را مخفیانه یکسان فرض کند. خطا و واحد پول باید صریح تبدیل شوند.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.