Facade Pattern
بسم الله الرحمن الرحيم
استكمالا للحديث عن أكثر 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.
جميل جدا, أعتقد أن المفهوم بات متضحاً جدا, فلندلف إلى تطبيقه بالمثال التالي.
لتعلم أنه 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
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !