Facade Pattern

3zcsمنذ 7 سنوات

بسم الله الرحمن الرحيم

استكمالا للحديث عن أكثر  Design pattern استخداما في بيئة Android, وبعد أن كنا قد بدأنا في الحديث عن أنواع Structural pattern, اليوم سيكون حديثنا عن Facade Pattern,

فنبدأ بالسؤال المعتاد ماهو Facade Pattern؟

لنبدأ بتعريفه:

اقتباس

The facade pattern is used to define a simplified interface to a more complex subsystem.

إذا فهو Pattern يستخدم لتبسيط interfacees لأجزاء النظام, الصورة التالية ستكون شارحة جدا لوظيفة واّلية عمل هذا Pattern.

facade_pattern.jpg

 

جميل جدا, أعتقد أن المفهوم بات متضحاً جدا, فلندلف إلى تطبيقه بالمثال التالي.

لتعلم أنه Pattern بسيط وواضح جدا, فلو فرضنا أن لدينا interface اسمه line, ولديه three claases قاموا بعمل implementation لهذا interface.

وهم straight و curve و snaky.


public interface Line {
   void draw();
}

class straight


public class Straight implements Line {

   @Override
   public void draw() {
      System.out.println("straight");
   }
}

class curve


public class Curve implements Line {

   @Override
   public void draw() {
      System.out.println("curve");
   }
}

snaky class


public class Snaky implements Line {

   @Override
   public void draw() {
      System.out.println("snaky");
   }
}

أصبح لدينا مجموعة من classes, لو كان النظام الذي سنقوم ببنائه أكبر من ذلك سيكون من الصعب جدا تذكر هذه classes, لذلك سنقوم ببناء Facade class يحل هذه المشكلة ويبسط التعامل معها.


public class LineMaker {
   private Line straight;
   private Line curve;
   private Line snaky;

   public LineMaker() {
      straight = new Straight();
      curve = new Curve();
      snaky = new Snaky();
   }

   public void drawStraight(){
      straight.draw();
   }
   public void drawCurve(){
      curve.draw();
   }
   public void drawSnaky(){
      snaky.draw();
   }
}

أصبح التعامل هذه المجموعة من classes غاية في البساطة ويمكن التعامل معها في main كالتالي


   public static void main(String[] args) {
      LineMaker lineMaker = new LineMaker();

      lineMaker.drawStraight();
      lineMaker.drawCurve();
      lineMaker.drawSnaky();		
   }
}

بينما لو لم نقم باستخدام facade class سيكون شكل main كالتالي:


   public static void main(String[] args) {
	  private Line straight = new Straight();
      private Line curve = new Curve();
      private Line snaky = new Snaky();
     
     straight.drawStraight();
     curve.drawCurve();
     snaky.drawSnaky();
   }
}

طبعا هذا المثال يبسط المشكلة لكن في حال كان حجم النظام كبير ستواجه مشكلة في التعامل مع هذه الكمية من classes.

 

وصلى الله وسلم وبارك على نبينا محمد وعلى اّله وصحبه أجمعين.

المراجع:

- sourcemaking.com/design_patterns

- java design pattern , rohit joshi

- head first design pattern

- tutorialspoint.com

كلمات دليلية:
1
إعجاب
4687
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !