Latest web development tutorials

نموذج البناء

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

الطبقة البناء خطوة بخطوة لبناء الكائن النهائي. الطبقة باني مستقلة عن غيرها من الأشياء.

مقدمة

القصد: مجمع بناء فصل تمثيلها، بحيث عملية البناء نفسها يمكن أن تخلق تمثيلات مختلفة.

أساسا لحل: الحل الأساسي في نظام البرمجيات، تواجه أحيانا "كائن معقد" لخلق عمل، والتي عادة ما تتكون خوارزمية معينة من أجزاء مختلفة من وجوه الفرعية؛ نظرا للتغيرات في الطلب، وأجزاء مختلفة من هذا الموضوع المعقد كثيرا ما وجه تغيير جذري، لكنها لن الجمع بين خوارزمية مستقرة نسبيا.

متى تستخدم: أنها لن تغير بعض العناصر الأساسية، وخليط منها تتغير باستمرار مرات.

كيفية إصلاح: وتغيرت وتتغير فصل.

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

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

المزايا: 1، وهو باني مستقلة، وسهلة لتوسيع.2، من السهل السيطرة تفاصيل المخاطر.

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

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

ملاحظة: الفرق بين النموذج المصنع هو: بناء النموذج هو أكثر قلقا مع النظام من تجميع الأجزاء.

تحقيق

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

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

ثم نقوم بإنشاءفصول وجبة،ArrayListوجبةلإنشاء أنواع مختلفة من الكائنات من خلال مزيج منMealBuilder البندمعالبند.BuilderPatternDemo، ونحن لشرح استخدام الطبقةMealBuilderلخلقوجبة.

وUML مخطط نمط البناء

خطوة 1

ويخلق واجهة دخول المواد الغذائية وتغليف المواد الغذائية.

Item.java

الواجهة العمومية البند {
   اسم سلسلة العامة ()؛
   التعبئة العامة والتغليف ()؛
   سعر تعويم العام ()؛	
}

Packing.java

الواجهة العمومية التعبئة {
   حزمة سلسلة العامة ()؛
}

خطوة 2

التعبئة إنشاء فصول كيان تنفيذ واجهة.

Wrapper.java

تنفذ الطبقة العامة التفاف التعبئة {

   Override
   حزمة سلسلة العامة () {
      العودة "التفاف".
   }
}

Bottle.java

تنفذ الطبقة العامة زجاجة التعبئة {

   Override
   حزمة سلسلة العامة () {
      العودة "زجاجة".
   }
}

خطوة 3

إنشاء مجردة واجهة الطبقة البند، وتقدم الطبقة وظيفة افتراضية.

Burger.java

العام برغر فئة مجردة تطبق البند {

   Override
   التعبئة العامة والتغليف () {
      العودة التفاف جديد ()؛
   }

   Override
   سعر تعويم مجردة العام ()؛
}

ColdDrink.java

فئة مجردة العامة ColdDrink تنفذ البند {

	Override
	التعبئة العامة والتغليف () {
       العودة زجاجة جديدة ()؛
	}

	Override
	سعر تعويم مجردة العام ()؛
}

خطوة 4

خلق امتدادا للبرغر الطبقات كيان وColdDrink.

VegBurger.java

الطبقة العامة VegBurger يمتد برغر {

   Override
   سعر تعويم العام () {
      العودة 25.0f.
   }

   Override
   اسم سلسلة العامة () {
      العودة "الخضار برجر".
   }
}

ChickenBurger.java

الطبقة العامة ChickenBurger يمتد برغر {

   Override
   سعر تعويم العام () {
      العودة 50.5f.
   }

   Override
   اسم سلسلة العامة () {
      العودة "برغر الدجاج".
   }
}

Coke.java

الطبقة العامة الكوك يمتد ColdDrink {

   Override
   سعر تعويم العام () {
      العودة 30.0f.
   }

   Override
   اسم سلسلة العامة () {
      العودة "الكوك".
   }
}

Pepsi.java

الطبقة العامة بيبسي يمتد ColdDrink {

   Override
   سعر تعويم العام () {
      العودة 35.0f.
   }

   Override
   اسم سلسلة العامة () {
      العودة "بيبسي".
   }
}

خطوة 5

إنشاء فئة دقيق مع الكائن عنصر المحدد أعلاه.

Meal.java

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

فئة العمومي وجبة {
   قائمة خاصة <البند> العناصر = ArrayList جديد <البند> ()؛	

   الفراغ AddItem العامة (السلعة) {
      items.add (البند)؛
   }

   تعويم العام getCost () {
      تكلفة تعويم = 0.0f.
      ل(البند البند: البنود) {
         التكلفة + = item.price ()؛
      }		
      العودة التكلفة؛
   }

   showItems الفراغ الجمهور () {
      ل(البند البند: البنود) {
         System.out.print ( "البند:" + item.name ())؛
         System.out.print (. "التعبئة:" + Item.packing () حزمة ())؛
         System.out.println ( "، السعر:" + item.price ())؛
      }		
   }	
}

خطوة 6

MealBuilder إنشاء فئة، باني الفعلي المسؤولة عن خلق كائن الفئة وجبة.

MealBuilder.java

الطبقة العامة MealBuilder {

   الجمهور وجبة prepareVegMeal () {
      وجبة وجبة = وجبة جديدة ()؛
      meal.addItem (VegBurger الجديدة ())؛
      meal.addItem (جديد فحم الكوك ())؛
      العودة وجبة.
   }   

   الجمهور وجبة prepareNonVegMeal () {
      وجبة وجبة = وجبة جديدة ()؛
      meal.addItem (ChickenBurger الجديدة ())؛
      meal.addItem (جديد بيبسي ())؛
      العودة وجبة.
   }
}

خطوة 7

BuiderPatternDemo استخدام MealBuider لإثبات وضع البناء (بناء نمط).

BuilderPatternDemo.java

الطبقة العامة BuilderPatternDemo {
   (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية {
      MealBuilder mealBuilder = MealBuilder الجديدة ()؛

      وجبة vegMeal = mealBuilder.prepareVegMeal ()؛
      System.out.println ( "وجبة الخضار")؛
      vegMeal.showItems ()؛
      System.out.println ( "مجموع التكلفة:" + vegMeal.getCost ())؛

      وجبة nonVegMeal = mealBuilder.prepareNonVegMeal ()؛
      System.out.println ( "\ nNon-الخضار وجبة \ ن")؛
      nonVegMeal.showItems ()؛
      System.out.println ( "مجموع التكلفة:" + nonVegMeal.getCost ())؛
   }
}

الخطوة 8

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

الخضار وجبة
البند: الخضار برغر، التعبئة والتغليف: التفاف، السعر: 25.0
البند: كوكس، التعبئة والتغليف: زجاجة، السعر: 30.0
إجمالي التكلفة: 55.0


غير الخضار وجبة
البند: برجر الدجاج، التعبئة والتغليف: التفاف، السعر: 50.5
البند: بيبسي، التعبئة والتغليف: زجاجة، السعر: 35.0
إجمالي التكلفة: 85.5