7.4 Factory Pattern ব্যবহার করে ক্লাস তৈরি করা:

 

আমরা Factory Pattern সম্পর্কে জেনেছি। দেখেছি কীভাবে Factory Function ব্যবহার করতে হয়। আজ আমরা দেখব কীভাবে Factory Pattern ব্যবহার করে ক্লাস তৈরি করা যায়।

Factory Pattern সম্পর্কে আমরা জানি যে, এটি দিয়ে অবজেক্ট তৈরি করা যায় ডিরেক্টলি new কিওয়ার্ড ব্যবহার না করে। তার পরিবর্তে এইটা একটা কমন ইন্টারফেস তৈরি করে যা সাবক্লাসগুলো দিয়ে অবজেক্ট তৈরি করে। ধরা যাক, একটা cake এর ফ্যাক্টরিতে হরেক রকমের cake তৈরি করা হয়। যেমনঃ চকলেট, পাউন্ড আর বিস্কুট cake। এক্ষেত্রে আমরা কীভাবে ফ্যাক্টরি প্যাটার্ন ফলো করে কাজ করব? নিচের উদাহরণটি খেয়াল করি।

class CakeFactory {
   constructor(){
      this.createCake = function(flavor){
          let cake;
          if(flavor === "chocolate"){
             cake = new ChocolateCake();
          }
          else if(flavor === "biscuit"){
             cake = new BiscuitCake();
          }
          else if(flavor === "pound"){
             cake = new PoundCake();
          }
          return cake;
      }
   }
}

class ChocolateCake {
   constructor(){
      this.cakeFlavor = "Chocolate Cake";
      this.made = function (){
         console.log("You made "+this.cakeFlavor)
      }
   }
}

class BiscuitCake {
    constructor(){
      this.cakeFlavor = "Biscuit Cake";
      this.made = function (){
        console.log("You made "+this.cakeFlavor)
      }
   }
}

class PoundCake {
    constructor(){
      this.cakeFlavor = "Pound Cake";
      this.made = function (){
        console.log("You made "+this.cakeFlavor)
      }
   }
}

const cakeFactory = new CakeFactory();
const chocolate = cakeFactory.createCake("chocolate");
const pound = cakeFactory.createCake("pound");
const biscuit = cakeFactory.createCake("biscuit")
chocolate.made()                          // আউটপুটঃ You made Chocolate Cake
pound.made()                              // আউটপুটঃ You made Pound Cake
biscuit.made()                            // আউটপুটঃ You made Biscuit Cake

 

দেখতে অনেক বড় হলেও কোডটি সহজ। সবার উপরে আমরা CakeFactory নামে একটা ক্লাস তৈরি করেছি, যা একটি জেনেরিক টেম্পলেট হিসেবে কাজ করবে অন্যান্য সাবক্লাস দিয়ে অবজেক্ট তৈরি করার জন্য। মানে, ChocolateCake, PoundCake আর BiscuitCake ক্লাসগুলোকে দিয়ে অবজেক্ট তৈরি করে। CakeFactory ক্লাসের constructor এ একটি ফাংশন আছে createCake নামে যা প্যারামিটার হিসেবে flavor নেয়, যদি flavor chocolate হয় তাহলে ChocolateClass এর একটি অবজেক্ট তৈরি হবে, অন্যান্য flavor হলে অন্যান্য ক্লাসের অবজেক্ট তৈরি হবে।

এভাবেই আমরা Factory টেম্পলেট ব্যবহার করে একই রকমের আলাদা আলদা অবজেক্ট তৈরি করতে পারি।