La diferencia entre las funciones de fábrica y los constructores ordinarios en los patrones de diseño.

En comparación con los constructores ordinarios, las funciones de fábrica tienen la ventaja de que pueden crear dinámicamente objetos de diferentes tipos y no es necesario usar la palabra clave new para crear objetos. Las funciones de fábrica también pueden devolver objetos de cualquier tipo, incluidos tipos primitivos, objetos, funciones, etc., y pueden usar cierres para implementar propiedades y métodos privados.

A continuación se proporciona un ejemplo de código específico:
En el siguiente código, createMonsterse utilizan una función de fábrica y una Persona constructora para crear un objeto. Se puede observar que las principales diferencias son:

  • El valor devuelto es diferente: la función de fábrica devuelve un nuevo objeto, mientras que el constructor devuelve un objeto inicializado
  • Los tipos de objetos son diferentes: las funciones de fábrica pueden devolver cualquier tipo de objeto, los tipos primitivos, los objetos, las funciones y los cierres se pueden usar para implementar propiedades y métodos privados, mientras que los constructores solo pueden devolver objetos de instancia del constructor.
  • El método de creación es diferente: al crear una función de fábrica, solo necesitamos definir una función ordinaria y devolver un nuevo objeto dentro de la función. Al crear un constructor normal, necesitamos usar una sintaxis especial para definir un constructor y usar la nueva palabra clave para crear un nuevo objeto.

función de fábrica

function createMonster(type) {
    
    
  let monster = {
    
    };
  if (type === 'dragon') {
    
    
    monster = {
    
    
      name: 'Dragon',
      attack: 100,
      defense: 50,
      speed: 80,
      fly: function() {
    
    
        console.log('The dragon is flying.');
      }
    };
  } else if (type === 'goblin') {
    
    
    monster = {
    
    
      name: 'Goblin',
      attack: 30,
      defense: 20,
      speed: 50,
      sneak: function() {
    
    
        console.log('The goblin is sneaking.');
      }
    };
  } else {
    
    
    console.log('Invalid monster type.');
  }
  return monster;
}

const dragon = createMonster('dragon');
console.log(dragon.name); // 输出:Dragon
console.log(dragon.attack); // 输出:100
console.log(dragon.defense); // 输出:50
console.log(dragon.speed); // 输出:80
dragon.fly(); // 输出:The dragon is flying.

const goblin = createMonster('goblin');
console.log(goblin.name); // 输出:Goblin
console.log(goblin.attack); // 输出:30
console.log(goblin.defense); // 输出:20
console.log(goblin.speed); // 输出:50
goblin.sneak(); // 输出:The goblin is sneaking.

nuevo constructor

function Monster(name, attack, defense, speed) {
    
    
  this.name = name;
  this.attack = attack;
  this.defense = defense;
  this.speed = speed;
}

Monster.prototype.fly = function() {
    
    
  console.log(`${
      
      this.name} is flying.`);
};

Monster.prototype.sneak = function() {
    
    
  console.log(`${
      
      this.name} is sneaking.`);
};

const dragon = new Monster('Dragon', 100, 50, 80);
console.log(dragon.name); // 输出:Dragon
console.log(dragon.attack); // 输出:100
console.log(dragon.defense); // 输出:50
console.log(dragon.speed); // 输出:80
dragon.fly(); // 输出:Dragon is flying.

const goblin = new Monster('Goblin', 30, 20, 50);
console.log(goblin.name); // 输出:Goblin
console.log(goblin.attack); // 输出:30
console.log(goblin.defense); // 输出:20
console.log(goblin.speed); // 输出:50
goblin.sneak(); // 输出:Goblin is sneaking.

Hay muchos ejemplos de fábrica y hecho a mano en la vida real, aquí hay algunos de ellos:

Fábrica de automóviles y automóviles artesanales: una fábrica de automóviles es una fábrica que produce automóviles en masa, utilizando máquinas y automatización para producir automóviles. La fabricación artesanal de un automóvil es un método de fabricación tradicional que requiere que los artesanos utilicen herramientas y materiales manuales para crear el automóvil.

Fábrica de procesamiento de alimentos y alimentos hechos a mano: Una fábrica de procesamiento de alimentos es una fábrica que produce alimentos a gran escala, utilizando máquinas y automatización para procesar los alimentos. La comida artesanal, por otro lado, es un método tradicional de fabricación que requiere que los chefs usen herramientas y materiales manuales para crear la comida.

Fábrica de fabricación de productos electrónicos y productos electrónicos hechos a mano: La fábrica de fabricación de productos electrónicos es un tipo de fábrica que produce productos electrónicos a gran escala, utilizando máquinas y equipos de automatización para producir productos electrónicos. La fabricación artesanal de productos electrónicos, por otro lado, es una forma tradicional de fabricación que requiere trabajadores calificados para crear productos electrónicos utilizando herramientas y materiales manuales.

En conclusión, tanto la fábrica como el hecho a mano tienen sus pros y sus contras, y ambos tienen su lugar en diferentes situaciones. En el desarrollo front-end, lo mismo ocurre con las funciones de fábrica y las funciones ordinarias. Todas tienen sus propios usos, ventajas y desventajas, y debe elegir qué método usar de acuerdo con la situación específica.

Supongo que te gusta

Origin blog.csdn.net/weixin_43811753/article/details/130166446
Recomendado
Clasificación