Latest web development tutorials

وضع جنبا إلى جنب

وضع جنبا إلى جنب (نمط مركب)، المعروف أيضا كجزء من النمط العام هو مجموعة من الكائنات المماثلة ككائن واحد. نمط مزيج بناء على هيكل الشجرة والجمع بين الكائن الذي يمثل جزءا والمستوى العام. هذا النوع من أنماط التصميم تنتمي النموذج الهيكلي، فإنه يخلق بنية شجرة من المجموعة المستهدفة.

خلق هذا النمط فئة تحتوي مجموعتها الخاصة من الكائنات. توفر هذه الفئة وسيلة لتعديل مجموعة وجوه نفسها.

نحن من الأمثلة التالية للتدليل على استخدام مزيج من وسائط. الأمثلة توضح التسلسل الهرمي للعاملين في المؤسسة.

مقدمة

القصد: تأليف الأجسام في الهياكل شجرة لتمثيل "جزء - كله" التسلسل الهرمي.وضع جنبا إلى جنب تمكن المستخدم من استخدام كائن والتراكيب واحد من الأجسام بشكل موحد.

في المقام الأول إلى حل: انها مشكلة من شجرة لدينا، عدم وضوح مفهوم عناصر بسيطة والعناصر المعقدة، يمكن للعميل التعامل مع عناصر بسيطة للتعامل مع العناصر المعقدة، حتى أن البنية الداخلية للفصل العميل وعناصر معقدة.

متى تستخدم: 1، الكائن الذي تريد لتمثيل جزء - التسلسل الهرمي كله (الشجرة).2، وتريد للمستخدمين مختلفة لتجاهل مجموعة من الكائنات مع كائن واحد، سيتم المستخدم الجمع بين هيكل موحد لجميع الكائنات.

كيفية إصلاح: الفروع والأوراق لتحقيق اجهة موحدة، واجهة هو مزيج من الفروع الداخلية.

رمز مفتاح: الخشب التكوين الداخلي للواجهة، ويحتوي على قائمة السمات الداخلية، والتي وضعت المكونات.

أمثلة التطبيق: 1، حسابيه بما في ذلك المعاملات والمشغلين والمعامل الأخرى، والتي قد تكون عملية أخرى شجرة المشغل، المشغلين، وغيرها من المعامل.2، جافا الهجوم الجوي وسوينغ، لزر وخانة هي الأوراق، وفرع الشجرة الحاويات.

المزايا: 1، وحدة رفيعة المستوى تدعو بسيطة.2، زادت عقدة بحرية.

سلبيات: عند استخدام طريقة الجمع، وأوراقها وفروعها بتنفيذ تعريف فئة، بدلا من واجهات، في انتهاك لعكس مبدأ التبعية.

سيناريوهات الاستخدام: جزء، والمشهد العام، مثل القائمة شجرة، ملف، إدارة المجلد.

ملاحظة: عند تعريف فئة معينة.

تحقيق

لديناموظف الدرجة،يتم التعامل مع الطبقة كمزيج من الطبقة نموذج.CompositePatternDemo،ونحن لشرح استخدام فئة فئةالموظفلإضافة التسلسل الهرمي إدارة وطباعة جميع الموظفين.

مزيج نمط UML الرسم البياني

خطوة 1

إنشاء فئةالموظف،وفئة مع قائمة الكائناتالموظف.

Employee.java

استيراد java.util.ArrayList.
استيراد java.util.List.

فئة العمومي الموظف {
   اسم سلسلة الخاص؛
   قسم سلسلة الخاص؛
   راتب الباحث الخاص؛
   خاص قائمة <الموظف> المرؤوسين.

   // منشئ الموظف العام (اسم سلسلة، سلسلة قسم، الباحث ش.م.ل) {
      this.name = الاسم؛
      this.dept = قسم،
      this.salary = سال.
      المرؤوسين = ArrayList جديد <الموظف> ()؛
   }

   الفراغ العام الاعلان (موظف ه) {
      subordinates.add (ه)؛
   }

   الفراغ العام الإزالة (موظف ه) {
      subordinates.remove (ه)؛
   }

   قائمة الجمهور <الموظف> getSubordinates () {
     العودة المرؤوسين.
   }

   toString سلسلة العامة () {
      العودة ( "الموظف: [اسم:" + اسم 
      + "، قسم" + قسم + "، الراتب:"
      + الراتب + "]")؛
   }   
}

خطوة 2

استخدام فئةالموظفلإنشاء وطباعة التسلسل الهرمي للموظفين.

CompositePatternDemo.java

الطبقة العامة CompositePatternDemo {
   (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية {
      الموظف الرئيس التنفيذي = الموظف الجديد ( "جون"، "الرئيس التنفيذي لشركة"، 30000).

      headSales الموظف = جديد الموظف ( "روبرت"، "رئيس المبيعات"، 20000).

      موظف headMarketing = جديد الموظف ( "ميشال"، "رئيس التسويق"، 20000).

      موظف clerk1 = جديد الموظف ( "لورا"، "التسويق"، 10000).
      موظف clerk2 = جديد الموظف ( "بوب"، "التسويق"، 10000).

      موظف salesExecutive1 = جديد الموظف ( "ريتشارد"، "المبيعات"، 10000).
      موظف salesExecutive2 = جديد الموظف ( "روب"، "المبيعات"، 10000).

      CEO.add (headSales)؛
      CEO.add (headMarketing)؛

      headSales.add (salesExecutive1)؛
      headSales.add (salesExecutive2)؛

      headMarketing.add (clerk1)؛
      headMarketing.add (clerk2)؛

      // طباعة جميع المنظمة الموظفين System.out.println (الرئيس التنفيذي)؛ 
      ل(موظف headEmployee: CEO.getSubordinates ()) {
         System.out.println (headEmployee)؛
         ل(موظف الموظف: headEmployee.getSubordinates ()) {
            System.out.println (موظف)؛
         }
      }		
   }
}

خطوة 3

تحقق من الانتاج.

الموظف: [الاسم: جون، قسم: الرئيس التنفيذي لشركة راتب: 30000]
الموظف: [الاسم: روبرت، قسم: رئيس المبيعات والراتب: 20000]
الموظف: [الاسم: ريتشارد، قسم: المبيعات والراتب: 10000]
الموظف: [الاسم: روب، قسم: المبيعات والراتب: 10000]
الموظف: [الاسم: ميشيل قسم: رئيس التسويق والراتب: 20000]
الموظف: [الاسم: لورا، قسم: التسويق، الراتب: 10000]
الموظف: [الاسم: بوب، قسم: التسويق، الراتب: 10000]