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

الگوی طراحی factory method در جاوا اسکریپت نوشته شده در   javascript 28 ژانویه , 2019 توسط  عباس حسینی

آیا تا به حال از یک دستگاه فروش اتومات یک نوشیدنی خریده اید ! دقت کرده اید که چطور بر اساس درخواست شما محصول مورد نظر را به شما تحویل میدهد؟ اگر این کار را انجام داده اید به صورت نا خودآگاه از الگوی طراحی factory method استفاده کرده اید که در ادامه به طور کامل آن را برای شما توضیح خواهم داد

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

الگوی طراحی factory method الگویی است که در آن وظیفه ساخت اشیا به عهده factory method است که بر اساس درخواست مورد نظر شی درخواستی را ساخته و در اختیار کاربر قرار میدهد
این الگو به ما کمک میکند که درگیر پیچیدگی های ساخت اشیا نشده ,و بدون دانستن کلاس شی آن را ایجاد کنیم
همانطور که در شکل زیر مشاهده میکنید factory method با توجه به نیاز شی مورد نظر را ساخته و در اختیار ما قرار میدهد

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

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

برای پیاده سازی این الگو من قصد دارد از مثال دستگاه فروش اتومات استفاده کنم که بر اساس درخواست مشتری چای یا قهوه در اختیار مشتری قرار میدهد، برای این کار یک کلاس به نام VendingMashineFactory میسازم که شامل یک متد به نام create است و وظیفه این متد ساخت شی بر اساس درخواست ارسالی میباشد


class vendingMashineFactory {
  create (type) {
    if('tea') {
       return new Tea()
    }
    else if('coffe') {
      return new Coffee
    }
  }
}

سپس دو کلاس Tea و Coffe را تشکیل میدهم که factory ما بتواند بر اساس درخواست کاربر شی مورد نظر متناسب با چای یا قهوه را ایجاد کند


class Tea {
  constructor (){
    this.name = 'tea'
  }
}

class Coffee {
  constructor (){
    this.name = 'coffee'
  }
}


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

See the Pen
Javascrit Factory Pttern
by abbas hosseini (@abizebel)
on CodePen.

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

استفاده از این الگو ما را از پیچیدگی های ساخت اشیا رها میکند ضمن اینکه باعث رعایت دو اصل ocp و srp میشود
srp به این دلیل که وظیفه ساخت شی بر عهده یک نفر است
ocp به این دلیل که میتوان انواع مختلفی از اشیا را برای ساخته شدن داخل factory تعریف کرد بدون آنکه در کلاس های دیگر تغییری ایجاد شود

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

 

Creational Patterns

 

Structural Patterns

 

Behavioral Patterns