التعريف: تمديد وظائف كائن ما دون الحاجة إلى تغيير الملف الأصلي واستخدام الميراث. يلف الكائن الحقيقي عن طريق إنشاء كائن غلاف ، أي الديكور.
سمات:
(1) الكائنات الزخرفية والكائنات الحقيقية لها نفس الواجهة. وبهذه الطريقة ، يمكن للكائن العميل التفاعل مع الكائن الزخرفي بنفس طريقة الكائن الحقيقي.
(2) يحتوي الكائن الزخرفي على إشارة إلى كائن حقيقي
(3) يقبل الكائن الزخرفي جميع الطلبات من العميل. يقوم بإعادة توجيه هذه الطلبات إلى الكائن الحقيقي.
(4) يمكن للكائنات الزخرفية إضافة بعض الوظائف الإضافية قبل أو بعد إعادة توجيه هذه الطلبات. هذا يضمن أنه في وقت التشغيل ، يمكن إضافة وظائف إضافية خارجيًا دون تعديل بنية كائن معين. في التصميم الموجهة للكائنات ، عادة ما يتم تحقيق الامتدادات الوظيفية لفئة معينة من خلال الميراث.
التطبيقات في تطوير مستوى المؤسسة والأطر شائعة الاستخدام: IO تدفق العمارة الأساسية
تعبير:
(1) دور المكون التجريدي: أعط واجهة مجردة لتنظيم الكائنات الجاهزة لتلقي مسؤوليات إضافية.
(2) دور مكون ملموس: تحديد فئة ستتلقى مسؤوليات إضافية.
(3) دور الديكور: يحمل مثيلًا لكائن مكون وينفذ واجهة تتفق مع واجهة المكون المجردة.
(4) دور الديكور الخرساني: مسؤول عن إضافة مسؤوليات إضافية إلى كائنات مكون.
أمثلة محددة:
/*** الأمثلة التالية لبيوت تزيين*/demo class public {public static void main (string [] args) {generichouse house = new Generichouse () ؛ مرآب المرآب = مرآب جديد (منزل) ؛ garage.dosomething () ؛ مطبخ المطبخ = مطبخ جديد (منزل) ؛ Kitchen.Dosomething () ؛ }}/*** دور المكون التجريدي: واجهة لتنظيم موقع الديكور المحدد*/الواجهة ArgtRacthouse {public void dosomething () ؛}/*** الدور الزخرفي: امسك الكائن المراد تزيينه*/فئة Master يمنع Argstracthouse {private abrstracthouseouseouse ؛ الماجستير العام (Abstracthouse absstracthouse) {this.abstracthouse = absstracthouse ؛ } public void dosomething () {system.out.println ("الدور الزخرفي: حامل الدور الزخرفي ، هنا هو صاحب المنزل") ؛ absstracthouse.dosomething () ؛ }}/*** دور مكون محدد: كائن محدد يحتاج إلى تزيين*/class generichouse يطبق absstracthouse {public void dosomething () {system.out.println ("دور مُنشئ معين: يمكن للمنزل أن يعيش في الأشخاص والمأوى من الرياح والمطر!") ؛ }}/*** دور زخرفي محدد: يتم تزيين الديكور المحدد هنا ، ويرث من الدور الزخرفي. نظرًا لأن الدور الزخرفي يحمل الكائن الزخرفي ، فإنه يحمل أيضًا الكائن المزخرف ويمكن تزيينه */Class Garage يمتد Master {Public Garage (Abstracthouse abststracthouse) {super (abstracthouse) ؛ } public void dosomething () {super.dosomething () ؛ System.out.println ("دور زخرفي محدد: قم بالديكور هنا ، تزيين أحد المنزل في مرآب ، حتى يتمكن المنزل من تخزين السيارة") ؛ }}/*** دور زخرفي محدد: يتم إجراء الديكور المحدد هنا ، وهو يرث من الدور الزخرفي ، لأن الدور الزخرفي يحمل الكائن الزخرفي ،* بحيث يحمل أيضًا الكائن الزخرفي ويمكن تزيينه*/Class Kitchen يمتد إلى Master {Public Kitchen (Abstracthouse Abstracthouse) } public void dosomething () {super.dosomething () ؛ System.out.println ("دور زخرفي محدد: قم بالزينة هنا ، تزيين أحد المنزل في المطبخ ، حتى يتمكن المنزل من الطهي") ؛ }}في التطور الفعلي ، تلعب وظيفة التغليف لتزيين النمط دورًا رائعًا. يمكننا القيام ببعض العمليات الأخرى على الكائن دون تغيير الكائن الأصلي ، والتي يمكن أن تمنعنا من تحويل الكائن ، ولكن في نفس الوقت يمكننا إكمال بعض العمليات بشكل جيد.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.