डिज़ाइन पैटर्न · प्रश्न 9 / 12
एक checkout service payment method को switch से चुनती है, और हर नए payment method के लिए इस class में बदलाव ज़रूरी है। कौन-सा refactoring open/closed principle के अनुरूप है?
1 उत्तर सही है। मध्यम
उत्तर दिखाएँ
उत्तर
- A #[AutoconfigureTag('myext.payment')] के साथ एक interface PaymentProviderInterface, प्रति payment method एक class, और service में #[AutowireIterator('myext.payment')] iterable $providers
व्याख्या
Strategy pattern हर payment method को एक common interface के साथ उसकी अपनी class में encapsulate करता है। tag के ज़रिए container सभी implementations एकत्र करता है, और service हर एक से पूछती है कि क्या वह ज़िम्मेदार है। नए payment methods, अन्य extensions से भी, service बदले बिना जुड़ जाते हैं। निकाले गए switch या एक संग्रह class को हर नए method के लिए फिर भी बदलना पड़ता है।