El código que no sigue los patrones de diseño establecidos (como Singleton, Factory u Observer) puede generar problemas como acoplamiento estricto, falta de flexibilidad o código duplicado.
El Copilot Chat puede ayudarte a usar los patrones de diseño adecuados para que el código sea más flexible y se pueda mantener. Por ejemplo, puede recomendar la conversión de instancias repetitivas en un patrón Factory, o el uso del patrón Observer para desacoplar clases estrechamente conectadas.
Nota:
Las respuestas descritas en este artículo son ejemplos. Las respuestas del Copilot Chat no son deterministas, por lo que puedes obtener respuestas diferentes a las aquí mostradas.
Escenario de ejemplo
Este código de JavaScript crea tres objetos Person, cada uno con las propiedades name y age. A continuación, usa el nombre de una persona para recuperar e imprimir su edad.
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}
var people = {};
function addPerson(name, age) {
  people[name] = new Person(name, age);
}
function getAge(name) {
  if (people[name]) {
    console.log(name + " is " + people[name].age + " years old.");
  } else {
    console.log("Person not found.");
  }
}
addPerson("Ana", 30);
addPerson("Mario", 25);
addPerson("Louise", 40);
getAge("Mario");
Indicación de ejemplo 1
What design patterns could improve this code? Don't show me code examples.
What design patterns could improve this code? Don't show me code examples.
Respuesta de ejemplo 1
Copilot sugiere los patrones siguientes:
- Patrón Singleton: para garantizar que solo haya una instancia del objeto people.
- Patrón Factory: para crear una fábrica para crear objetos Person.
- Patrón Module: para encapsular el objeto peopley las funciones relacionadas dentro de un módulo para evitar la contaminación del espacio de nombres global.
Indicación de ejemplo 2
Ahora puedes pedir a Copilot que implemente el patrón que consideres más adecuado.
Refactor this code using the module pattern
Refactor this code using the module pattern
Respuesta de ejemplo 2
const PersonModule = (function() {
  class Person {
    constructor(name, age) {
      this.name = name;
      this.age = age;
    }
  }
  const people = {};
  function addPerson(name, age) {
    people[name] = new Person(name, age);
  }
  function getAge(name) {
    if (people[name]) {
      console.log(name + " is " + people[name].age + " years old.");
    } else {
      console.log("Person not found.");
    }
  }
  return {
    addPerson,
    getAge
  };
})();
PersonModule.addPerson("Ana", 30);
PersonModule.addPerson("Mario", 25);
PersonModule.addPerson("Louise", 40);
PersonModule.getAge("Mario");
El patrón Module mejora la organización del código y la privacidad de los datos y reduce el riesgo de conflictos de nomenclatura, lo que hace que el código sea más escalable y fácil de mantener.