نمط المصنع في C ++

Nmt Almsn Fy C



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

مقدمة عن نمط المصنع

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

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







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



لماذا نستخدم نمط المصنع؟

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



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





فيما يلي بعض الأسباب الأخرى لاستخدام نمط المصنع في C ++:

  • يتم استخدام نمط Factory Method عندما لا يعرف الفصل مسبقًا الكائنات التي يحتاجون إلى إنشائها.
  • يتم استخدام النمط عندما يعتمد الفصل على الفئات الفرعية الخاصة به لتحديد الكائنات التي يقوم بإنشائها.
  • يكون مفيدًا عندما تريد تغليف المنطق لإنشاء كائن معقد في مكان واحد.

مثال على نمط المصنع في C ++

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



فيما يلي مثال لكيفية استخدام هذا التنفيذ لنمط المصنع:

# تضمين

استخدام اسم للمحطة ؛

شكل الطبقة {

عام :

افتراضي فارغ يرسم ( ) = 0 ؛

ثابتة شكل * خلق الشكل ( int يكتب ) ؛

} ؛

فئة الدائرة : الشكل العام {

عام :

فارغ يرسم ( ) {

كوت << 'رسم دائرة'. << إندل ؛

}

} ؛

فئة مستطيل : الشكل العام {

عام :

فارغ يرسم ( ) {

كوت << 'رسم مستطيل'. << إندل ؛

}

} ؛

شكل * شكل :: خلق الشكل ( int يكتب ) {

لو ( يكتب == 1 ) {
يعود دائرة جديدة ( ) ؛
} آخر لو ( يكتب == 2 ) {
يعود مستطيل جديد ( ) ؛
} آخر {
يعود nullptr ؛
}
}


int رئيسي ( ) {

شكل * دائرة = شكل :: خلق الشكل ( 1 ) ؛

دائرة -> يرسم ( ) ؛

شكل * مستطيل = شكل :: خلق الشكل ( 2 ) ؛

مستطيل -> يرسم ( ) ؛

يعود 0 ؛

}

في هذا المثال ، لدينا فئة الشكل مع فئتين مشتقتين: الدائرة والمستطيل. تحتوي فئة الشكل على وظيفة افتراضية خالصة draw () ، والتي يتم تنفيذها بواسطة الفئات المشتقة. تحتوي فئة الشكل أيضًا على وظيفة ثابتة createShape (نوع int) ، والتي تعمل كطريقة مصنع لإنشاء مثيلات للفئات المشتقة بناءً على النوع المحدد. يتم استدعاء وظيفة draw () على الكائنات التي تم إنشاؤها لإظهار سلوكها المحدد.

  صورة تحتوي على نص ، خط ، وصف لقطة شاشة يتم إنشاؤها تلقائيًا

خاتمة

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