[Java] Factory Method Design Pattern
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: أساسيات اللغة Java Basics
صفحة 1 من اصل 1 • شاطر
[Java] Factory Method Design Pattern
أهلا بكم
كنا قد تحدثنا سابقا عن أنماط التصميم Design Pattern كمهوم عام و انواع تلك الانماط فى هذا المقال سنتعلم كيفية استخدام نمط التصميم Factory pattern أو Factory Method Pattern
حيث يعتبر نمط المصنع Factory pattern أو Factory Method Pattern أحد أكثر أنماط التصميم استخدامًا في لغة Java. يوفر هذا النمط أحد أفضل الطرق لإنشاء كائن.
يتم إستخدام نمط المصنع Factory pattern عندما يكون لدينا فئة علوية #super_class ولديه عدد من الفئات الفرعية #sub_classes ونريد إنشاء كائن #object من واحد منها بناء على مدخلات معينة ويتم انشاء نمط المصنع من خلال إنشاء الفئة العلوية #super_class كواجهة #interface أو كفئة مجردة #abstract
يجعلك هذا تبني قالباً تجبر من خلاله كل الفئات الفرعية #sub-classes التي تقوم بعمل وراثة منه بتطبيق الدوال الموجودة في الفئة #super-class لكن بناء على بيانات مختلفة
يمكنك تطبيق نمط المصنع Factory pattern بالخطوات البسيطة التالية :
سنقوم بإنشاء فئة علوية #super_class ويأكن باسم Shape ويتم استخدامها كواجهة #interface وبة طريقة واحد وليكن باسم draw بعد ذلك نقوم بانشاء ثلاثة_أو كما تحب_ فئات فرعية #sub_classes لتنفيذ الواجهة السابقة
الخطوة الاولي :إنشاء واجهة
الخطوة الثانية : إنشاء الفئات المطلوبة فى المثال التى تنفذ الواجهة
الخطوة الثالثة :إنشاء فئة factory class التى سنقوم من خلالها بإنشاء الكائنات object للفئات الفرعية
أخير التنفيذ فى الطريقة الرئسية :
كنا قد تحدثنا سابقا عن أنماط التصميم Design Pattern كمهوم عام و انواع تلك الانماط فى هذا المقال سنتعلم كيفية استخدام نمط التصميم Factory pattern أو Factory Method Pattern
حيث يعتبر نمط المصنع Factory pattern أو Factory Method Pattern أحد أكثر أنماط التصميم استخدامًا في لغة Java. يوفر هذا النمط أحد أفضل الطرق لإنشاء كائن.
كيفية الاستخدام :
يتم إستخدام نمط المصنع Factory pattern عندما يكون لدينا فئة علوية #super_class ولديه عدد من الفئات الفرعية #sub_classes ونريد إنشاء كائن #object من واحد منها بناء على مدخلات معينة ويتم انشاء نمط المصنع من خلال إنشاء الفئة العلوية #super_class كواجهة #interface أو كفئة مجردة #abstract
يجعلك هذا تبني قالباً تجبر من خلاله كل الفئات الفرعية #sub-classes التي تقوم بعمل وراثة منه بتطبيق الدوال الموجودة في الفئة #super-class لكن بناء على بيانات مختلفة
كيفية التطبيق :
يمكنك تطبيق نمط المصنع Factory pattern بالخطوات البسيطة التالية :
- إنشاء واجهة #interface أو فئة مجردة abstract class كفئة علوية
- تنفيذ الواجهة فى الفئات الفرعية أو توسيع الفئة المجردة لوراثة منها
- إنشاء فئة factory class التى سنقوم من خلالها بإنشاء الكائنات object للفئات الفرعية
مثال توضيحي :
سنقوم بإنشاء فئة علوية #super_class ويأكن باسم Shape ويتم استخدامها كواجهة #interface وبة طريقة واحد وليكن باسم draw بعد ذلك نقوم بانشاء ثلاثة_أو كما تحب_ فئات فرعية #sub_classes لتنفيذ الواجهة السابقة
الخطوة الاولي :إنشاء واجهة
Shape.java
- الكود:
public interface Shape {
void draw();
}
الخطوة الثانية : إنشاء الفئات المطلوبة فى المثال التى تنفذ الواجهة
Rectangle.java
- الكود:
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
Square.java
- الكود:
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}
Circle.java
- الكود:
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Inside Circle::draw() method.");
}
}
الخطوة الثالثة :إنشاء فئة factory class التى سنقوم من خلالها بإنشاء الكائنات object للفئات الفرعية
ShapeFactory.java
- الكود:
public class ShapeFactory {
//use getShape method to get object of type shape
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}
أخير التنفيذ فى الطريقة الرئسية :
- الكود:
public class FactoryPatternDemo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
//get an object of Circle and call its draw method.
Shape shape1 = shapeFactory.getShape("CIRCLE");
//call draw method of Circle
shape1.draw();
//get an object of Rectangle and call its draw method.
Shape shape2 = shapeFactory.getShape("RECTANGLE");
//call draw method of Rectangle
shape2.draw();
//get an object of Square and call its draw method.
Shape shape3 = shapeFactory.getShape("SQUARE");
//call draw method of square
shape3.draw();
}
}
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: أساسيات اللغة Java Basics
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» كبسولات نباتية فارغة
» شحن عملات تيك توك مجانا بدون رقم هاتف
» فوط صحية ناعمة لايام الولادة بالقطن العضوية قوية الامتصاص| organyckw
» اعلانات الباصات الكويت | شركة دعاية واعلان | كواليتي ميكرز | 0096597550465
» كيفية تحديد سعر تصميم تطبيقات الجوال– ايكون تك
» تعلم كيفية حفظ و أسترجاع الصورة فى قاعدة بيانات أكسس باستخدام الكائن Stream object
» كيفية تأسيس شركة في دبي
» افضل واحدث كاميرات المراقبة الامنية والمشاهدة عبر الانترنت
» اصنع شبكتك بنفسك