Facade

GOF Intent:
Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher level interface that makes the subsystem easier to use.

Façade عبارت است از يک interface ساده شده از چند library يا Subsystem. با استفاده از آن پيچيدگي هاي دروني پياده سازي و فراخواني Subsystem ها از ديد کاربر پنهان مي گردد.

Façade در واقع بعنوان Entry point آن Subsystem عمل مي کند و وابستگي‌ها کاربر را از خود Subsystem و پياده سازي آن از بين مي برد

Façade همچنين فراخواني متدهاي موجود در Subsystem را نظم مي بخشد.

Facade Design Pattern

نمونه کد:

public class Class1{
   public void doTask1(){
      System.out.println(“Doing task 1″);
   }
}


public class Class2{
   public void doTask2(){
      System.out.println(“Doing task 2″);
   }
}


public class Class3{
   public void doTask3(){
      System.out.println(“Doing task 3″);
   }
}


public class Facade{
   public void doSomething(){
      Class1 a = new Class1();
      Class2 b = new Class2();
      Class3 c = new Class3();

      a.doTask1();
      b.doTask2();
      c.doTask3();
   }
}


static static void main(String[] args){
   Facade f = new Facade();
   f.doSomething();
}

و نمونه کد 2:
وقتي که دکمه استارت کامپيوتر را مي زنيم، اجزاء مستقل از هم مثل حافظه و هارد و CPU دست به دست مي دهند تا کامپيوتر روشن شود. در اين حالت دکمه استارت درواقع نقش Facade را بازي مي کند.

/* Complex parts */
class CPU {
   public void freeze() { … }
   public void jump(long position) { … }
   public void execute() { … }
}


class Memory {
   public void load(long position, byte[] data) { … }
}


class HardDrive {
   public byte[] read(long lba, int size) { … }
}


/* Facade */
class Computer {
   private CPU cpu;
   private Memory memory;
   private HardDrive hardDrive;

   public Computer() {
      this.cpu = new CPU();
      this.memory = new Memory();
      this.hardDrive = new HardDrive();
   }

   public void startComputer() {
      cpu.freeze();
      memory.load(BOOT_ADDRESS,
         hardDrive.read(BOOT_SECTOR,SECTOR_SIZE));
      cpu.jump(BOOT_ADDRESS);
      cpu.execute();
   }
}


/* Client */
public static void main(String[] args) {
   Computer facade = new Computer();
   facade.startComputer();
}



منبع ها:

  1. Design Patterns – Elements of Reusable Object Oriented Software (GOF) By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  2. Facade in Devlake
  3. Facade in Wikipedia

پست شده در دسته‌بندی نشده

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*


پنج − 1 =

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

تماس با من: admin@paspars.com