انتقل إلى المحتوى
أمين أبوزيد
قيد المراجعةJNR-005-L06

Decorator

  • الدرس 6 من 10
  • 11 دقيقة قراءة
  • Junior
في هذا الدرس 4 موضوعات

محتوى هذا الدرس مكتوب وينتظر المراجعة. يعرض المخطط أدناه ما سيغطيه، وسيُنشر بعد اعتماده.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

add behavior by wrapping an object.

الموضوعات المخطط لها

  • Problem: add logging or caching without changing the original class.
  • A decorator implements the same interface and holds another one inside.
  • It adds its work, then calls the inner one.
  • Decorators can be stacked.
  • JDK example: BufferedReader wrapping a Reader.
تفاصيل المخطط المبدئي

عرض عملي

java
class CachedPriceLookup implements PriceLookup {
    private final PriceLookup inner;
    private final Map<Sku, Money> cache = new HashMap<>();
    public Money priceOf(Sku s) { return cache.computeIfAbsent(s, inner::priceOf); }
}

اختبر فهمك

What must a decorator share with the object it wraps?

أظهر الإجابة

The same interface.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.