{"meta":{"title":"Refactoring zum Implementieren eines Entwurfsmusters","intro":"Copilot-Chat kann Entwurfsmuster zum Verbessern deines Codes vorschlagen.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/copilot","title":"GitHub Copilot"},{"href":"/de/copilot/tutorials","title":"Anleitungen"},{"href":"/de/copilot/tutorials/copilot-chat-cookbook","title":"GitHub Copilot Chat-Cookbook"},{"href":"/de/copilot/tutorials/copilot-chat-cookbook/refactor-code","title":"Umgestalten von Code"},{"href":"/de/copilot/tutorials/copilot-chat-cookbook/refactor-code/refactor-design-patterns","title":"Umgestalten von Entwurfsmustern"}],"documentType":"article"},"body":"# Refactoring zum Implementieren eines Entwurfsmusters\n\nCopilot-Chat kann Entwurfsmuster zum Verbessern deines Codes vorschlagen.\n\nCode, der keinem etablierten Entwurfsmuster entspricht (z. B. Singleton, Factory oder Observer), kann zu Problemen wie enger Kopplung, mangelnder Flexibilität oder dupliziertem Code führen.\n\nCopilot-Chat kann dir beim Verwenden geeigneter Entwurfsmuster helfen, um deinen Code flexibler und wartbarer zu gestalten. So kann es beispielsweise empfehlen, sich wiederholende Instanziierungen in ein Factorymuster zu konvertieren oder das Beobachtermuster zu verwenden, um eng verbundene Klassen zu entkoppeln.\n\n> \\[!NOTE] Bei den in diesem Artikel beschriebenen Antworten handelt es sich um Beispiele. Da die Copilot-Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise andere Antworten als die hier dargestellten.\n\n## Beispielszenario\n\nMit diesem JavaScript-Code werden drei `Person`-Objekte jeweils mit `name`- und `age`-Eigenschaften erstellt. Anschließend wird der Name einer Person verwendet, um ihr Alter abzurufen und zu anzugeben.\n\n```javascript id=person-module\nclass Person {\n  constructor(name, age) {\n    this.name = name;\n    this.age = age;\n  }\n}\n\nvar people = {};\n\nfunction addPerson(name, age) {\n  people[name] = new Person(name, age);\n}\n\nfunction getAge(name) {\n  if (people[name]) {\n    console.log(name + \" is \" + people[name].age + \" years old.\");\n  } else {\n    console.log(\"Person not found.\");\n  }\n}\n\naddPerson(\"Ana\", 30);\naddPerson(\"Mario\", 25);\naddPerson(\"Louise\", 40);\n\ngetAge(\"Mario\");\n```\n\n## Beispielprompt 1\n\n```copilot copy prompt ref=person-module\nWhat design patterns could improve this code? Don't show me code examples.\n```\n\n## Beispielantwort 1\n\nCopilot schlägt die folgenden Muster vor:\n\n* **Singleton-Muster**: Um sicherzustellen, dass nur eine Instanz des `people`-Objekts vorhanden ist\n* **Fabrikmuster**: um eine Fabrik zum Erstellen von `Person`-Objekten zu erzeugen\n* **Modulmuster**: Um das `people`-Objekt und die zugehörigen Funktionen in einem Modul zu kapseln und so das Verunreinigen des globalen Namespaces zu vermeiden\n\n## Beispielprompt 2\n\nDu kannst Copilot jetzt dazu auffordern, das deiner Meinung nach geeignetste Muster zu implementieren.\n\n```copilot copy prompt ref=person-module\nRefactor this code using the module pattern\n```\n\n## Beispielantwort 2\n\n```javascript\nconst PersonModule = (function() {\n  class Person {\n    constructor(name, age) {\n      this.name = name;\n      this.age = age;\n    }\n  }\n\n  const people = {};\n\n  function addPerson(name, age) {\n    people[name] = new Person(name, age);\n  }\n\n  function getAge(name) {\n    if (people[name]) {\n      console.log(name + \" is \" + people[name].age + \" years old.\");\n    } else {\n      console.log(\"Person not found.\");\n    }\n  }\n\n  return {\n    addPerson,\n    getAge\n  };\n})();\n\nPersonModule.addPerson(\"Ana\", 30);\nPersonModule.addPerson(\"Mario\", 25);\nPersonModule.addPerson(\"Louise\", 40);\n\nPersonModule.getAge(\"Mario\");\n```\n\nDas Modulmuster verbessert die Codeorganisation und den Datenschutz und reduziert das Risiko von Benennungskonflikten, wodurch der Code wartbarer und skalierbarer wird.\n\n## Weitere Informationen\n\n* [Prompt-Engineering für GitHub Copilot Chat](/de/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Bewährte Methoden für die Verwendung von GitHub Copilot](/de/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}