Vivasoft-logo

 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 āĻŸā§‡āĻŽā§āĻĒāϞ⧇āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āχ āϰāĻ•āĻŽā§‡āϰ āφāϞāĻžāĻĻāĻž āφāϞāĻĻāĻž āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

  • Person āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āϝāĻžāϰ name āĻ“ age āύāĻžāĻŽā§‡āϰ ⧍ āϟāĻŋ āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āφāϛ⧇ āϝāĻž āĻ•āĻ¨ā§āϏāĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āχāύāĻŋāĻļāĻŋ⧟āĻžāϞāĻžāχāϜ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āĻāĻŦāĻ‚ āĻāϰ printName āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻĨāĻĄ āĻ°ā§Ÿā§‡āϛ⧇āĨ¤
class Person{
constructor(name, age){
this.name = name;
this.age = age;
}
printName(){
console.log(name);
}
}
//creating object of the Person class
const new_person = new Person(‘Alex’, 20)
 
  • Rectangle āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āϝāĻžāϰ height āĻ“ width āύāĻžāĻŽā§‡āϰ ⧍ āϟāĻŋ āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āφāϛ⧇ āϝāĻž āĻ•āĻ¨ā§āϏāĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āχāύāĻŋāĻļāĻŋ⧟āĻžāϞāĻžāχāϜ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āĻāĻŦāĻ‚ āĻāϰ getHeight āĻ“ getWidth āύāĻžāĻŽā§‡āϰ āĻĻ⧁āϟāĻŋ āĻŽā§‡āĻĨāĻĄ āĻ°ā§Ÿā§‡āϛ⧇.
    class Rectangle {
    constructor(height, width) {
    this.height = height;
    this.width = width;
    }
    getHeight(){
    return this.height;
    }
    getWidth(){
    return this.width;
    }
    }
    const rectangle20x30 = new Rectangle(20,30);
  •  Animal āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰ āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ name, color, canFly(boolean), canswimm(boolean) āύāĻžāĻŽā§‡āϰ āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻāĻŦāĻ‚ speak, eat, run āύāĻžāĻŽā§‡āϰ ā§Š āϟāĻŋ āĻŽā§‡āĻĨāĻĄ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤
  • const myCar = {
    make: ‘Ford’,
    model: ‘Mustang’,
    year: 1969,
    start: function(){
    console.log(‘Engine started’);
    },
    stop: function(){
    console.log(‘Engine stoped’);
    }
    };
    āωāĻĒāϰ⧋āĻ•ā§āϤ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϟāĻŋāϕ⧇ āĻ•ā§āϞāĻžāϏ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻ•āϰ āĻāĻŦāĻ‚ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻ•ā§āϰāĻŋā§Ÿā§‡āϟ āĻ•āϰāĨ¤
  • āĻ•ā§āϞāĻžāϏ āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ āĻ…āĻŦā§āĻœā§‡āĻ•ā§āϟ āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝ⧇?
  • āĻ•ā§āϞāĻžāϏ⧇āϰ āĻŽāĻ§ā§āϝ⧇ this āĻ•āĻŋāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻāϰ āĻ•āĻžāϜ āĻ•āĻŋ?
  • āĻŽā§‡āĻĨāĻĄ āĻ“ āĻ•āĻ¨ā§āϏāĻŸā§āϰāĻžāĻ•ā§āϟāϟāϰ āφāϞāĻžāĻĻāĻž āϕ⧀āĻ­āĻžāĻŦ⧇?