Polymorphism اجازه می‌دهد چند نوع آبجکت از طریق قرارداد مشترکی استفاده شوند. سرویس سفارش می‌تواند با Interface درگاه پرداخت کار کند و هر درگاه پیاده‌سازی مستقل خود را داشته باشد.

این ویژگی وابستگی به نوع مشخص را کاهش می‌دهد، اما قرارداد مشترک باید واقعاً معنادار باشد.

در عمل چه اتفاقی می‌افتد؟

چند کلاس PaymentGateway می‌توانند متد یکسان pay را با رفتار داخلی متفاوت پیاده کنند و CheckoutService از قرارداد مشترک استفاده کند.

برای تکمیل بحث، ارتباط این مفهوم را با کلاس و آبجکت بررسی کنید.

پلیمورفیسم بدون وراثت هم ممکن است

در PHP یا C# چند کلاس می‌توانند یک اینترفیس مشترک را پیاده کنند. در Go نیز Interfaceها به روش ساختاری و بدون اعلان صریح implements پیاده می‌شوند. رفتار مصرف‌کننده باید با قرارداد مشترک سازگار باشد.