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

يُلخص نمط تصميم Builder خصائص الكائن ويسمح لك بإنشاء تمثيل له. يتيح لك هذا النمط إنشاء كائنات معقدة ، بخصائص مختلفة على الرغم من أنها تنتمي إلى نفس الفئة.

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

تنفيذ نموذج Builder في Java

من الأمثلة الجيدة على نمط البناء هو نظام طلب البيتزا الذي يسمح للعملاء بتحديد خيارات الإضافات المختلفة.

فئة المنتج

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

عامفصلبيتزا{
// ملكيات
خاصint رقم الأمر؛
خاص خيط عجينة البيتزا؛
خاص خيط تتصدر.

// حاصل على وضعية
عامintgetOrderNumber(){
يعود رقم الأمر؛
}

عامفارغsetOrderNumber(int رقم الأمر){
هذا.orderNumber = orderNumber ؛
}

عام خيط getPizzaDough(){
يعود عجينة البيتزا؛
}

عامفارغعجينة البيتزا(عجينة بيتزا سلسلة)
instagram viewer
{
هذا.pizzaDough = عجينة البيتزا ؛
}

عام خيط getTopping(){
يعود تتصدر.
}

عامفارغتعيين(سلسلة تتصدر){
هذا.topping = تتصدر ؛
}
}

فئة البناء

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

عامواجهه المستخدمباني{
عامفارغصنع عجينة البيتزا();
عامفارغإنشاء();
عام بيتزا getPizza();
}

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

عامفصلجبن بيتزا بانيالأدواتباني{
خاص البيتزا البيتزا؛

عامجبن بيتزا باني(){
هذا. pizza = جديد بيتزا()؛
}

@تجاوز
عامفارغصنع عجينة البيتزا(){
هذا. pizza.set بيتزا عجينة ("عجين");
}

@تجاوز
عامفارغإنشاء(){
هذا.pizza.setTopping ("جبنه");
}

@تجاوز
عام بيتزا getPizza(){
يعودهذا.بيتزا؛
}
}

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

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

فئة المخرج

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

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

عامفصلمخرج{
خاص بيتزا البناء

عاممخرج(باني بيتزا باني){
هذا.pizzaBuilder = pizzaBuilder ؛
}

عام بيتزا getPizza(){
يعودهذا.pizzaBuilder.getPizza () ،
}

عامفارغجعل البيتزا(){
هذا.pizzaBuilder.createPizzaDough();
هذا.pizzaBuilder.createTopping();
}
}

يستخدم فئة المخرجين واجهة الباني لعمل البيتزا. إنه حارس الخوارزمية.

مزايا استخدام نموذج تصميم المنشئ

الميزة الرئيسية لاستخدام نمط تصميم المنشئ هي خاصية التغليف الخاصة به. يعد هذا جانبًا مهمًا من جوانب هندسة البرمجيات ، حيث يساعد في تطوير التطبيقات الآمنة.

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