تصف هذه المقالة مبادئ واستخدام الأوضاع الزخرفية لأنماط تصميم Java. شاركه للرجوع إليه ، على النحو التالي:
يمكن للوضع الزخرفي تمديد وظائف كائن ما دون تغيير الملف الأصلي واستخدام الميراث. يلف الكائن الحقيقي عن طريق إنشاء كائن غلاف ، أي الديكور. يستخدم تصميم IO في JDK الوضع الزخرفي ، والذي يمكنه توسيع الوظيفة عن طريق لف تدفق العقدة من خلال تدفق الترشيح.
تكوين الحرف في الوضع الزخرفي:
① دور المكون التجريدي: أعط واجهة مجردة لتوحيد الكائنات التي يتم إعدادها لتلقي وظائف المعالجة. (InputStream ، OutputStream)
② دور المكون الملموس: يحدد فئة ستتلقى وظائف إضافية. (تدفق العقدة)
③ دور الديكور: يحمل مثيلًا لكائن مكون وينفذ واجهة تتفق مع واجهة المكون المجردة. (FilterInputStream ، FilterOutputStream)
④ دور الديكور الملموس: مسؤول عن إضافة وظائف إضافية إلى كائنات مكونة. (تدفق المرشح مع وظائف إضافية محددة ، BufferedInputStream ، DatainputStream ، إلخ)
فيما يلي مثال بسيط لنمط ديكور:
1. دور المكون التجريدي : تحديد مكون واجهة
package com.tydic.decorator ؛ // rode component rod component interface component {public void dosomething () ؛}2. أدوار بناء محددة : تحتاج إلى تنفيذ أدوار مكونة مجردة ، ويمكنك إضافة بعض المسؤوليات إلى هذا الكائن.
Package com.tydic.decorator ؛/** * بناء دور ملموس ، تنفيذ بناء الدور التجريدي * Author Administrator * */class class concreteComponent Public Component {Override public void dosomething () {system.out.println ("function a") ؛ }} 3. تزيين الدور : عقد كائن لبناء إشارة إلى الدور وتنفيذ أدوار المكونات التجريدية. يتم تنفيذ دور المكون التجريدي لأنه لا يمكن تغيير النوع بعد إضافة وظائف ، تمامًا مثل FilterInputStream لا يزال دفق إدخال ، لا يزال يحتوي على خصائص دفق الإدخال. الإشارة إلى دور بناء الكائنات هو أنه من أجل إضافة وظائف ، يجب عليك عقد إشارة إلى دور المكون الذي سيتم إرفاق الوظيفة إليه.
Package com.tydic.decorator ؛/*** تزيين الدور ، والمرجع إلى دور المكون ، وتنفيذ دور المكون* إذا كنت تريد إضافة وظيفة ، فيجب عليك تنفيذ دور المكون. لإضافة وظيفة ، يجب أن تعقد مرجعًا إلى دور المكون المراد إرفاقه. هذا هو السبب في أنه يجب عليك عقد إشارة إلى دور المكون * Author Administrator * */يقوم Decorator بالفئة العامة بتنفيذ المكون {مكون المكون الخاص ؛ // هذا هو دور المكون الذي يجب إرفاقه ، والذي يمكن تحميله عند وجود مصنع للديكور العام (مكون المكون) {this.C.Ponent = المكون ؛ } Override public void dosomething () {component.dosomething () ؛ }}4.
package com.tydic.decorator ؛/** * بالنسبة لدور زخرفي محدد 1 ، يجب أن يتم توريث الدور الزخرفي ويتم إعطاء الوظائف المراد إرفاقها * @Author Administrator * */Class Class ConcretedEcorator1 يمتد Docentator {public concretedecorator1 (مكون مكون) {super (component) ؛ } Override public void dosomething () {super.dosomething () ؛ هذا. }} Package com.tydic.decorator ؛/** * بالنسبة لدور زخرفي محدد 2 ، يجب أن يتم توريث الدور الزخرفي ويتم إعطاء الوظائف المراد إرفاقها * @Author Administrator * */Class Class ConcretedEcorator2 تمتد Decorator {Public ConcretedEcorator2 (مكون مكون) {Super (component) ؛ } Override public void dosomething () {super.dosomething () ؛ this.doanothing () ؛ // وظائف إضافية باطلة عامة doanothing () {system.out.println ("function c") ؛ }}5. اكتب رمز العميل
package com.tydic.decorator ؛ client client {public static void main (string [] args) {component component = concreteComponent () component3.dosomething () ؛ }}تلخيص:
يمكن للوضع الزخرفي استخدام طريقة التركيبة وتوسيع الكائنات ديناميكيًا في وقت التشغيل دون ميراث. هذا شيء لا يمكن أن يفعله الميراث. الميراث ثابت ، امتداد للفئة.
مزايا وعيوب الوضع الزخرفي:
المزايا: 1. تمديد وظيفة الكائن ، وهو أكثر مرونة من الميراث. 2. باستخدام فئات زخرفية محددة مختلفة وترتيب ومزيج من هذه الفئات الزخرفية ، يمكن للمصممين إنشاء العديد من مجموعات السلوكيات المختلفة.
العيوب: سيجعل البرنامج أكثر تعقيدًا.
لمزيد من المحتوى المتعلق بـ Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "مقدمة والبرمجة التعليمية المتقدمة حول البرمجة الموجهة إلى Java" ، و "البرنامج التعليمي حول بنية بيانات Java" و "خوارزمية" و "ملخص مهارات تشغيل Java" ، و "ملخص مهارات تشغيل Java" و "ملخصات Java Cate".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.