بخش های اصلی

آموزش الگوهای طراحی

Design Pattern - الگوی Facade

الگوی Facade پیچیدگی های سیستم را پنهان می کنه و با استفاده از کلاینتی که می تواند به سیستم دسترسی داشته باشه، برای کلاینت، رابطی فراهم می کنه. از آن جایی که این الگوی طراحی برای پنهان کردنِ پیچیدگی های سیستمِ موجود، رابطی به آن اضافه می کنه، زیرگروه الگوی ساختاری (structural) محسوب میشه.

این الگو دارای یک کلاسِه که متد های ساده ای را ارائه میده که کلاینت به آن ها نیاز داره و delegateها از کلاس های موجود در سیستم، در متد فراخوانی میشن.

پیاده سازی

در این بخش یک رابط به نام Shape و کلاس های concreteای که این رابط را پیاده سازی می کنن، ایجاد می کنیم. در مرحله ی بعدی یک کلاسِ facade، به نام ShapeMaker تعریف می کنیم.

کلاس ShapeMaker از کلاس های concrete برای محول کردن فراخوانی های کاربرها به این کلاس ها استفاده می کنه. FacadePatternDemo، در نسخه ی آزمایشیِ کلاس مان، از کلاس ShapeMaker برای نمایشِ نتیجه (خروجی) استفاده می کنه.

facade pattern uml diagram

مرحله ی 1

ایجاد یک رابط.

Shape.java

public interface Shape {
   void draw();
}

مرحله ی 2

ایجاد کلاس های concreteای که رابطی یکسان پیاده سازی می کنن.

Rectangle.java

public class Rectangle implements Shape {

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

Square.java

public class Square implements Shape {

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

Circle.java

public class Circle implements Shape {

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

مرحله ی 3

ایجاد کلاسِ facade.

ShapeMaker.java

public class ShapeMaker {
   private Shape circle;
   private Shape rectangle;
   private Shape square;

   public ShapeMaker() {
      circle = new Circle();
      rectangle = new Rectangle();
      square = new Square();
   }

   public void drawCircle(){
      circle.draw();
   }
   public void drawRectangle(){
      rectangle.draw();
   }
   public void drawSquare(){
      square.draw();
   }
}

مرحله ی 4

استفاده از facade برای کشیدن انواع مختلف شکل ها.

FacadePatternDemo.java

public class FacadePatternDemo {
   public static void main(String[] args) {
      ShapeMaker shapeMaker = new ShapeMaker();

      shapeMaker.drawCircle();
      shapeMaker.drawRectangle();
      shapeMaker.drawSquare();		
   }
}

مرحله ی 5

بررسی خروجی

Circle::draw()
Rectangle::draw()
Square::draw()

مبحث آموزشی

آموزش الگوهای طراحی

Learn Design Patterns

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

تبلیغات

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

آخرین مقالات

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد