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.
Chat de Copiloto puede ayudarle a usar patrones de diseño adecuados para que el código sea más flexible y fácil de 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. Chat de Copiloto las respuestas son no deterministas, por lo que puede obtener respuestas diferentes de las que se muestran aquí.
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");
Ejemplo de solicitud 1
What design patterns could improve this code? Don't show me code examples.
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");
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 siguientes patrones:
- Patrón Singleton: para garantizar que solo haya una instancia del objeto
people. - Patrón de Fábrica: para desarrollar una fábrica que cree objetos
Person. - Patrón de Módulo: para encapsular el objeto
peopley las funciones relacionadas dentro de un módulo para evitar la contaminación del espacio de nombres global.
Ejemplo de mensaje 2
Ahora puede pedirle a Copilot que implemente el patrón que considere más adecuado.
Refactor this code using the module pattern
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");
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.