CodeShot
Juniorسختی 2 از ۵· در 15٪ مصاحبه‌های این حوزه پرسیده شده

الگوی Decorator چه مشکلی را حل می‌کند؟

نشان کردن

پاسخ کوتاه

اضافه‌کردن رفتار جدید به یک Object در زمان اجرا، بدون تغییردادن کلاس اصلی آن.

پاسخ کامل

به‌جای ارث‌بری برای هر ترکیب ممکن از قابلیت‌ها (که منجر به انفجار تعداد کلاس‌ها می‌شود)، Decorator با Wrap کردن Object داخل یک کلاس دیگر با همان Interface، رفتار اضافه می‌کند. BufferedStream در .NET یک نمونهٔ واقعی این الگوست.

مثال کد

csharp\nStream s = new BufferedStream(new FileStream(""f.txt"", FileMode.Open));\n