الگوی طراحی facade در جاوا اسکریپت

الگوی طراحی facade در جاوا اسکریپت نوشته شده در   javascript 18 دسامبر , 2018 توسط  عباس حسینی

آیا تا به حال توجه کرده اید زمانیکه از سینمای خانگی استفاده میکنید، بدون اینکه بدانید شما دارید از الگوی طراحی facade استفاده میکنید، در ادامه من قصد دارم تعریف این الگو به همراه روش استفاده و ارتباط آن با سینمای خانوادگی را توضیح بدهم .

تعریف الگوی طراحی facade در جاوا اسکریپت

الگوی طراحی facade در جاوا اسکریپت یکی دیگر از ۲۳ الگوی gof است که تعریف آن عبارت است از :

facade یک interface است که مجموعه ای از subsystem ها را در بر میگیرد

اگر به شکل زیر توجه کنید میبینید که client از طریق facade با مجموعه ای از زیر سیستم ها در ارتباط است و این به clinet کمک میکند بدون درگیر شدن با زیرسیستم های پیچیده بتواند با آنها ارتباط برقرا کند

به عبارتی دیگر الگوی facade یک API است که از طریق آن میتوانیم با مجموعه ای از زیر سیستم ها ارتباط برقرار کنیم و facade مانند یک لایه آنها را پوشش میدهد تا کاربر درگیر پیچیدگی کار با آنها نشود

نحوه پیاده سازی الگوی طراحی facade در جاو اسکریپت

پیاده سازی این الگو بسیار آسان است برای این کار کافیست تمام زیر سیستم ها شناسایی شوند و داخل یک کلاس facade با آنها ارتباط برقرا کنیم مثلا در اینجا ما مثال سینمای خانگی را داریم فرض میکنیم سینمای خانگی شامل یک تلویزیون و یک عدد دستگاه dvd player میباشد حالا میخواهیم الگویی طراحی کنیم که کنترل این دو ابزار فقط از یک نقطه مثلا کنترل تلویزیون امکانپذیر باشد

پس برای پیاده سازی این الگو باید یک کلاس جدید به نام HomeCinemaFacade بسازیم که پیچیدگی استفاده از tv و dvdplayer را کم کنیم

در ابتدا کلاس های TV و DvdPlayer را تشکیل میدهیم


//Subsystem 1
class Tv {
  on () {
    console.log('tv is on')
  };
  off(){}
}

//Subsystem 2
class DvdPlayer {
  on () {};
  off () {};
  play (dvd) {
    console.log(dvd + ' movie is playing')
  };
}

سپس داخل کلاس HomeCinemaFacade با زیر سیستم ها ارتباط برقرا میکنیم که بتوان از طریق این کلاس از آنها استفاده کرد



//Facade Pattern
class HomeCinemaFacade {
  constructor (subsystems){
    this.tv = subsystems.tv;
    this.dvdPlayer = subsystems.dvdPlayer
  }
  watch (dvd){
    this.tv.on()
    this.dvdPlayer.play(dvd)
  }
}

در بخش زیر نسخه کامل این الگو به همراه نحوه اجرا و استفاده از آن را مشاهده میکنید

See the Pen Javascript Facade Pattern by abbas hosseini (@abizebel) on CodePen.

موارد استفاده از الگوی facade در جاوا اسکریپت

زمانی از این الگو استفاده میکنیم که سیستم ما از بخش های بسیار زیاد مختلفی تشکیل شده و استفاده از این سیستم برای کاربر بسیار سخت میباشد در این موقعیت بهترین کار این است که امکانی به کاربر داده شود که با استفاده از یک یا چند API ساده بتواند از یک سیستم پیچیده و بزرگ براحتی استفاده کند

لیست الگوهای طراحی GOF در جاو اسکریپت

 

Creational Patterns

 

Structural Patterns

 

Behavioral Patterns