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

[Java] Factory Method Design Pattern

اذهب الى الأسفل

[Java] Factory Method Design Pattern Empty [Java] Factory Method Design Pattern

مُساهمة من طرف أحمد مناع الخميس مارس 24, 2022 7:25 pm

أهلا بكم

كنا قد تحدثنا سابقا عن أنماط التصميم 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();
   }
}

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1107
النقاط : 202033
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى