ما هو وضع الديكور؟
إضافة ديناميكي بعض المسؤوليات الإضافية إلى كائن. من حيث إضافة وظائف ، يكون وضع الديكور أكثر مرونة من توليد الفئات الفرعية.
1. الهيكل
المكون: يحدد واجهة كائن يمكنها إضافة مسؤوليات إلى هذه الكائنات ديناميكيًا.
Interface Component {public void operation () ؛} concreteComponent: قم بتنفيذ الواجهة المحددة بواسطة المكون. class concreteComponent تنفذ المكون {Override public void operation () {system.out.println ("السلوك الأولي") ؛ }} ديكور: تزيين فئة مجردة ، مكون مورث ، يمتد وظائف فئة المكون من فئات خارجية ، ولكن بالنسبة للمكون ، ليست هناك حاجة لمعرفة وجود ديكور.
يقوم ديكور الفئة بتنفيذ المكون {// عقد كائن مكون ويشكل علاقة تجميع مع مكون المكون المحمي بالمكون ؛ // تمرير في الكائن ليتم تعديله بشكل إضافي ديكور عام (مكون مكون) {this.component = component ؛ } Override // استدعاء الطريقة الأصلية لتعديل تشغيل void public () {component.operation () ؛ }} ConcretedEcorator: تلعب كائنات زخرفية محددة وظيفة إضافة المسؤوليات إلى المكون.
Class ConcretedEcoratora يمتد Decorator {private string addstate = "New Property 1" ؛ concretedEcoratora (مكون مكون) {super (مكون) ؛ } public void operation () {super.operation () ؛ System.out.println ("إضافة السمة:" + إضافة state) ؛ }} class concretedEcoratorB يمتد ديكور {public concretedEcoratorB (مكون مكون) {super (component) ؛ } public void operation () {super.operation () ؛ تمت إضافة adbehavior () ؛ } public void adderbehavior () {system.out.println ("إضافة سلوك") ؛ }} رمز الاختبار
DecoratorPattern {public static void main (string [] args) {component component = new concreteComponent () ؛ مكون. operation () ؛ system.out.println ("=================================================================================================================================================================================== ========================================================== ========================================================== ========================================================== ========================================================== ========================================================== ========================================================== System.out.println("================================================================================================ System.out.output(); }} نتائج التشغيل
أولي السلوك ======================================================= ================================================================ ================================================================ ================================================================
2. سيناريوهات التطبيق
1. تحتاج إلى إضافة مسؤوليات إلى كائن واحد بشكل ديناميكي وشفافي ، أي أنه لا يؤثر على كائنات أخرى.
2. تحتاج إلى إضافة وظائف ديناميكية إلى كائن ، ويمكن التراجع عن هذه الوظائف ديناميكيًا.
3. من الضروري إضافة عدد كبير من الوظائف الناتجة عن الترتيب والمزيج من بعض الوظائف الأساسية ، بحيث تصبح علاقة الميراث غير واقعية.
4. عندما لا يمكن استخدام طريقة توليد الفئات الفرعية للتوسع. أحد السيناريو هو أنه قد يكون هناك عدد كبير من الامتدادات المستقلة ، والتي ستنتج عددًا كبيرًا من الفئات الفرعية لدعم كل مجموعة ، مما يؤدي إلى انفجار عدد الفئات الفرعية. قد تكون هناك حالة أخرى لأن تعريف الفصل مخفي ، أو لا يمكن استخدام تعريف الفئة لإنشاء فئات فرعية.
3. النقاط الرئيسية
1. الكائنات الزخرفية والأشياء الحقيقية لها نفس الواجهة. وبهذه الطريقة ، يمكن للكائن العميل التفاعل مع الكائن الزخرفي بنفس طريقة الكائن الحقيقي.
2. يحتوي الكائن الزخرفي على إشارة إلى كائن حقيقي.
3. الكائن الزخرفي يقبل جميع الطلبات من العميل. يقوم بإعادة توجيه هذه الطلبات إلى الكائن الحقيقي.
4. يمكن للكائنات الزخرفية إضافة بعض الوظائف الإضافية قبل أو بعد إعادة توجيه هذه الطلبات. هذا يضمن أنه في وقت التشغيل ، يمكن إضافة وظائف إضافية خارجيًا دون تعديل بنية كائن معين. في التصميم الموجهة للكائنات ، عادة ما يتم تحقيق الامتدادات الوظيفية لفئة معينة من خلال الميراث.
ما سبق هو مقدمة للمحتوى ذي الصلة حول وضع ديكور Java ، وآمل أن يكون مفيدًا لتعلم الجميع.