غالبًا ما يتم ترجمة الديكور على أنه "زخرفة". هذان الكيانان مطلوبان في وضع الديكور.
تعريف الديكور: يضيف بشكل ديناميكي بعض المسؤوليات الإضافية إلى كائن ، مثل طلاء الجدار. يعد استخدام وضع الديكور أكثر مرونة من استخدام توليد الفئات الفرعية لتحقيق التوسع الوظيفي.
لماذا تستخدم الديكور
يمكننا عادةً استخدام الميراث لتحقيق توسيع الوظائف. يجب التنبؤ بوظائف التوسع هذه.
سبب استخدام الديكور هو أن هذه الوظائف تحتاج إلى تحديد ديناميكي من قبل المستخدم للانضمام. يوفر Decorator طريقة "التوصيل والتشغيل" لتحديد وقت إضافة الميزات أثناء وقت التشغيل.
كيفية استخدام الوضع الزخرفي
خذ مثالًا للسيارة في المحول. أكوام القيادة ، مثل الحفر.
لننشئ واجهة أولاً:
نسخة الكود كما يلي:
الواجهة العامة عمل {
إدراج الفراغ العام () ؛
}
عمل الواجهة له تطبيق محدد: أدخل أكوام مربعة أو أكوام دائرية. لنأخذ إدخال كومة مربعة كمثال:
نسخة الكود كما يلي:
يطبق Squarepeg من الطبقة العامة العمل {
public void insert () {
System.out.println ("إدراج Pile Square") ؛
}
}
هناك الآن تطبيق: قبل أن يتم تشغيل الكومة ، وبعد أن يتم تشغيل الكومة ، يتم تسمير اللوحة الخشبية على الوبر قد يكون من الضروري أن يضعف الرف بعد قيادة الوبر (مجرد استعارة).
ثم نستخدم وضع الديكور ، حيث يكون Squarepeg Square Pile Squarepeg هو تزيين (رسمها الطلاء) ، ونحن بحاجة إلى رسم بعض "الطلاء" على تزيين ، وهذه الدهانات هي تلك الوظائف الإضافية.
نسخة الكود كما يلي:
ديكور الطبقة العامة ينفذ العمل {
العمل الخاص
// يتم تعبئة الوظائف الإضافية في هذه القائمة
arraylist private others = new ArrayList () ؛
// استخدم الطريقة الجديدة المشتركة في المنشئ لتقديم كائنات العمل ؛
ديكور عام (عمل عمل) {
هذا.
آخرون ("حفر حفرة") ؛
آخرون ("لوحة الأظافر") ؛
}
public void insert () {
newmethod () ؛
}
// في الطريقة الجديدة ، نضيف طرقًا أخرى قبل الإدراج ، يتم تحديد الترتيب هنا من قبل المستخدم بمرونة
public void newmethod () {
othermethod () ؛
work.insert () ؛
}
الفراغ العام othermethod () {
listIratorator listIrator = others.listIrator () ؛
بينما (listIratorator.hasNext ()) {
system.out.println (((string) (listIratorator.next ())) + "in progress") ؛
}
}
}
في المثال أعلاه ، صنفنا كل من ثقوب الحفر وألواح تسمير أمام إدراج الوبر.
حسنًا ، وضع الديكور خارج ، دعنا نرى كيفية تسميته:
نسخة الكود كما يلي:
العمل squarepeg = new Squarepeg () ؛
ديكور العمل = ديكور جديد (Squarepeg) ؛
Decorator.insert () ؛
تم الانتهاء من وضع الديكور هنا.
إذا كنت حريصًا ، فستجد أن المكالمة أعلاه تشبه المكالمة التي نقرأها عندما نقرأ الملف:
نسخة الكود كما يلي:
FileReader FR = New FileReader (اسم الملف) ؛
BufferedReader BR = جديد BufferedReader (FR) ؛
في الواقع ، يتم تنفيذ واجهة برمجة تطبيقات I/O من Java باستخدام ديكور.
تنفيذ الديكور في جيف
في نظام المنتدى ، لا يمكن أن تظهر بعض الشخصيات الخاصة في المنتدى ، مثل "Down with XXX" ، نحتاج إلى تصفية هذه الخطوط "الرجعية". لا تدعهم يظهرون أو يعرضونها في سطوع كبير.
في مقال يتحدث على وجه التحديد عن Jive في عمود IBM Java ، تم ذكر أن ForummessageFilter.java في Jive يستخدم وضع الديكور. ، ثم يمكنك إعادة تنظيم ForUmmessageFilter كوضع ديكور.
لذلك ، عندما نقرر ما إذا كان وضع الديكور حقًا وسيستخدم حقًا وضع الديكور ، يجب أن ندرك تعريف وضع الديكور والأدوار المعنية (تزيين وديكور).