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 Cakepound.made() // āĻāĻāĻāĻĒā§āĻāĻ You made Pound Cakebiscuit.made() // āĻāĻāĻāĻĒā§āĻāĻ You made Biscuit CakeÂ
Â
āĻĻā§āĻāϤ⧠āĻ āύā§āĻ āĻŦā§ āĻšāϞā§āĻ āĻā§āĻĄāĻāĻŋ āϏāĻšāĻāĨ¤ āϏāĻŦāĻžāϰ āĻāĻĒāϰ⧠āĻāĻŽāϰāĻžÂ CakeFactory āύāĻžāĻŽā§ āĻāĻāĻāĻž āĻā§āϞāĻžāϏ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ, āϝāĻž āĻāĻāĻāĻŋ āĻā§āύā§āϰāĻŋāĻ āĻā§āĻŽā§āĻĒāϞā§āĻ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰāĻŦā§ āĻ āύā§āϝāĻžāύā§āϝ āϏāĻžāĻŦāĻā§āϞāĻžāϏ āĻĻāĻŋā§ā§ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝāĨ¤ āĻŽāĻžāύā§, ChocolateCake, PoundCake āĻāĻ°Â BiscuitCake āĻā§āϞāĻžāϏāĻā§āϞā§āĻā§ āĻĻāĻŋā§ā§ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰā§āĨ¤Â CakeFactory āĻā§āϞāĻžāϏā§āĻ°Â constructor āĻ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻāĻā§Â createCake āύāĻžāĻŽā§ āϝāĻž āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ flavor āύā§ā§, āϝāĻĻāĻŋ flavor chocolate āĻšā§ āϤāĻžāĻšāϞā§Â ChocolateClass āĻāϰ āĻāĻāĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻšāĻŦā§, āĻ āύā§āϝāĻžāύā§āϝ flavor āĻšāϞ⧠āĻ āύā§āϝāĻžāύā§āϝ āĻā§āϞāĻžāϏā§āϰ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻšāĻŦā§āĨ¤
āĻāĻāĻžāĻŦā§āĻ āĻāĻŽāϰāĻžÂ Factory āĻā§āĻŽā§āĻĒāϞā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻ āϰāĻāĻŽā§āϰ āĻāϞāĻžāĻĻāĻž āĻāϞāĻĻāĻž āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
- Person āύāĻžāĻŽā§āϰ āĻāĻāĻāĻŋ āĻā§āϞāĻžāϏ āϤā§āϰāĻŋ āĻāϰāĻž āĻšā§ā§āĻā§ āϝāĻžāϰ name āĻ age āύāĻžāĻŽā§āϰ ⧍ āĻāĻŋ āĻāĻā§āϰāĻŋāĻŦāĻŋāĻāĻ āĻāĻā§ āϝāĻž āĻāύā§āϏāĻā§āϰāĻžāĻā§āĻāϰā§āϰ āĻŽāϧā§āϝ⧠āĻāύāĻŋāĻļāĻŋā§āĻžāϞāĻžāĻāĻ āĻāϰāĻž āĻšā§ā§āĻā§ āĻāĻŦāĻ āĻāϰ printName āύāĻžāĻŽā§āϰ āĻāĻāĻāĻŋ āĻŽā§āĻĨāĻĄ āϰā§ā§āĻā§āĨ¤
- 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 āĻāĻŋāĻā§āĻžāϰā§āĻĄ āĻāϰ āĻāĻžāĻ āĻāĻŋ?
- āĻŽā§āĻĨāĻĄ āĻ āĻāύā§āϏāĻā§āϰāĻžāĻā§āĻāĻāϰ āĻāϞāĻžāĻĻāĻž āĻā§āĻāĻžāĻŦā§?