{"id":359,"date":"2024-04-25T18:09:34","date_gmt":"2024-04-25T17:09:34","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=359"},"modified":"2024-06-03T18:13:29","modified_gmt":"2024-06-03T17:13:29","slug":"das-factory-design-pattern-in-java","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=359","title":{"rendered":"Das Factory-Design-Pattern in Java"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Einf\u00fchrung<\/h2>\n\n\n\n<p>Das Factory-Design-Pattern, auch bekannt als Fabrikmuster, ist eines der bekanntesten und am h\u00e4ufigsten verwendeten Entwurfsmuster in der Softwareentwicklung. Es geh\u00f6rt zur Kategorie der Erzeugungsmuster (Creational Patterns), die sich mit der Erstellung von Objekten befassen, ohne die Logik der Erstellung zu spezifizieren. Das Hauptziel des Factory-Patterns besteht darin, die Instanziierung von Objekten zu zentralisieren und die Komplexit\u00e4t der Objektbildung zu verbergen, wodurch der Code flexibler, wartbarer und erweiterbarer wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Motivation<\/h2>\n\n\n\n<p>In der objektorientierten Programmierung (OOP) ist die Erstellung von Objekten eine grundlegende Aufgabe. Jedoch kann der direkte Einsatz von <code>new<\/code> zur Instanziierung von Klassen zu Problemen f\u00fchren, insbesondere wenn der Erstellungsprozess komplex ist oder sich \u00e4ndern kann. Ein solcher Ansatz kann zu einer engen Kopplung zwischen Klassen f\u00fchren und die Wartbarkeit und Erweiterbarkeit des Codes erschweren.<\/p>\n\n\n\n<p>Das Factory-Pattern l\u00f6st diese Probleme, indem es die Erstellung von Objekten kapselt und zentralisiert. Dadurch kann der Code flexibler gestaltet werden, und \u00c4nderungen an der Erstellung von Objekten m\u00fcssen nur an einer Stelle vorgenommen werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grundlagen des Factory-Patterns<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Struktur<\/h3>\n\n\n\n<p>Das Factory-Pattern besteht im Wesentlichen aus folgenden Komponenten:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Produkt (Product)<\/strong>: Ein Interface oder eine abstrakte Klasse, die das zu erstellende Objekt beschreibt.<\/li>\n\n\n\n<li><strong>Konkretes Produkt (Concrete Product)<\/strong>: Eine konkrete Implementierung des Produktes.<\/li>\n\n\n\n<li><strong>Erzeuger (Creator)<\/strong>: Eine Klasse, die eine Factory-Methode definiert, welche die Erstellung von Produktobjekten kapselt.<\/li>\n\n\n\n<li><strong>Konkreter Erzeuger (Concrete Creator)<\/strong>: Eine konkrete Implementierung des Erzeugers, die die Factory-Methode implementiert und ein konkretes Produkt erzeugt.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel<\/h3>\n\n\n\n<p>Betrachten wir ein einfaches Beispiel, um die Struktur und Funktionsweise des Factory-Patterns zu verdeutlichen. Angenommen, wir entwickeln eine Anwendung, die verschiedene Arten von Formen (z.B. Kreise und Rechtecke) erstellen muss.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Produkt-Interface<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">Shape<\/span> <\/span>{\n    void draw();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Konkrete Produkte<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Circle<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Shape<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> void draw() {\n        System.out.println(<span class=\"hljs-string\">\"Drawing a Circle\"<\/span>);\n    }\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Rectangle<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Shape<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> void draw() {\n        System.out.println(<span class=\"hljs-string\">\"Drawing a Rectangle\"<\/span>);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Erzeuger (Factory)<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ShapeFactory<\/span> <\/span>{\n    <span class=\"hljs-comment\">\/\/ Factory-Methode zur Erstellung von Shape-Objekten<\/span>\n    <span class=\"hljs-keyword\">public<\/span> Shape getShape(String shapeType) {\n        <span class=\"hljs-keyword\">if<\/span> (shapeType == <span class=\"hljs-keyword\">null<\/span>) {\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">null<\/span>;\n        }\n        <span class=\"hljs-keyword\">if<\/span> (shapeType.equalsIgnoreCase(<span class=\"hljs-string\">\"CIRCLE\"<\/span>)) {\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> Circle();\n        } <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span> (shapeType.equalsIgnoreCase(<span class=\"hljs-string\">\"RECTANGLE\"<\/span>)) {\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> Rectangle();\n        }\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">null<\/span>;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Verwendung der Factory<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">public <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">FactoryPatternDemo<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        ShapeFactory shapeFactory = <span class=\"hljs-keyword\">new<\/span> ShapeFactory();\n\n        <span class=\"hljs-comment\">\/\/ Erstelle ein Circle-Objekt<\/span>\n        Shape shape1 = shapeFactory.getShape(<span class=\"hljs-string\">\"CIRCLE\"<\/span>);\n        shape1.draw();\n\n        <span class=\"hljs-comment\">\/\/ Erstelle ein Rectangle-Objekt<\/span>\n        Shape shape2 = shapeFactory.getShape(<span class=\"hljs-string\">\"RECTANGLE\"<\/span>);\n        shape2.draw();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel kapselt die <code>ShapeFactory<\/code> die Erstellung von <code>Shape<\/code>-Objekten. Der Client (hier <code>FactoryPatternDemo<\/code>) verwendet die Factory, um Objekte zu erstellen, ohne direkt die konkreten Klassen zu instanziieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vorteile des Factory-Patterns<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Reduzierte Kopplung<\/strong>: Das Factory-Pattern reduziert die Abh\u00e4ngigkeit zwischen dem Client-Code und den konkreten Klassen. Der Client muss nur das Produkt-Interface kennen und nicht die konkreten Implementierungen.<\/li>\n\n\n\n<li><strong>Erh\u00f6hte Flexibilit\u00e4t<\/strong>: \u00c4nderungen an der Erstellung von Objekten m\u00fcssen nur an einer Stelle (in der Factory) vorgenommen werden. Neue Produkttypen k\u00f6nnen leicht hinzugef\u00fcgt werden, ohne den bestehenden Client-Code zu \u00e4ndern.<\/li>\n\n\n\n<li><strong>Zentralisierte Steuerung<\/strong>: Die zentrale Steuerung der Objekterstellung erm\u00f6glicht es, zus\u00e4tzliche Logik (wie Caching, Protokollierung oder Berechtigungspr\u00fcfungen) hinzuzuf\u00fcgen.<\/li>\n\n\n\n<li><strong>Einfache Wartung<\/strong>: Da die Logik zur Erstellung von Objekten zentralisiert ist, wird der Code leichter wartbar und erweiterbar.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Erweiterungen des Factory-Patterns<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Abstrakte Fabrik (Abstract Factory)<\/h3>\n\n\n\n<p>Das Abstrakte Fabrik-Muster erweitert das Factory-Muster, indem es eine Schnittstelle zur Erstellung von verwandten Objekten ohne Angabe ihrer konkreten Klassen definiert. Dieses Muster wird verwendet, wenn ein System unabh\u00e4ngig von den Methoden zur Erstellung, Komposition und Darstellung seiner Objekte sein soll.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel<\/h3>\n\n\n\n<p>Angenommen, wir m\u00f6chten verschiedene Arten von UI-Komponenten (z.B. Buttons und TextFields) f\u00fcr verschiedene Betriebssysteme (z.B. Windows und Mac) erstellen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Abstrakte Produkte<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">Button<\/span> <\/span>{\n    void paint();\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">TextField<\/span> <\/span>{\n    void render();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Konkrete Produkte<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">WindowsButton<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Button<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> void paint() {\n        System.out.println(<span class=\"hljs-string\">\"Rendering a Windows Button\"<\/span>);\n    }\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MacButton<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Button<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> void paint() {\n        System.out.println(<span class=\"hljs-string\">\"Rendering a Mac Button\"<\/span>);\n    }\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">WindowsTextField<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">TextField<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> void render() {\n        System.out.println(<span class=\"hljs-string\">\"Rendering a Windows TextField\"<\/span>);\n    }\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MacTextField<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">TextField<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> void render() {\n        System.out.println(<span class=\"hljs-string\">\"Rendering a Mac TextField\"<\/span>);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Abstrakte Fabrik<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">GUIFactory<\/span> <\/span>{\n    Button createButton();\n    TextField createTextField();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Konkrete Fabriken<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">WindowsFactory<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">GUIFactory<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> Button createButton() {\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> WindowsButton();\n    }\n\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> TextField createTextField() {\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> WindowsTextField();\n    }\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MacFactory<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">GUIFactory<\/span> <\/span>{\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> Button createButton() {\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> MacButton();\n    }\n\n    @Override\n    <span class=\"hljs-keyword\">public<\/span> TextField createTextField() {\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> MacTextField();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Verwendung der Abstrakten Fabrik<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AbstractFactoryDemo<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> Application configureApplication() {\n        Application app;\n        GUIFactory factory;\n        String osName = System.getProperty(<span class=\"hljs-string\">\"os.name\"<\/span>).toLowerCase();\n        <span class=\"hljs-keyword\">if<\/span> (osName.contains(<span class=\"hljs-string\">\"mac\"<\/span>)) {\n            factory = <span class=\"hljs-keyword\">new<\/span> MacFactory();\n        } <span class=\"hljs-keyword\">else<\/span> {\n            factory = <span class=\"hljs-keyword\">new<\/span> WindowsFactory();\n        }\n        app = <span class=\"hljs-keyword\">new<\/span> Application(factory);\n        <span class=\"hljs-keyword\">return<\/span> app;\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> void main(String&#91;] args) {\n        Application app = configureApplication();\n        app.paint();\n    }\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Application<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> Button button;\n    <span class=\"hljs-keyword\">private<\/span> TextField textField;\n\n    <span class=\"hljs-keyword\">public<\/span> Application(GUIFactory factory) {\n        button = factory.createButton();\n        textField = factory.createTextField();\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> void paint() {\n        button.paint();\n        textField.render();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem erweiterten Beispiel verwendet die <code>Application<\/code>-Klasse eine abstrakte Fabrik (<code>GUIFactory<\/code>), um verschiedene UI-Komponenten zu erstellen, ohne deren konkrete Implementierungen zu kennen. Dies erm\u00f6glicht eine einfache Anpassung der UI f\u00fcr verschiedene Betriebssysteme, ohne den Hauptcode \u00e4ndern zu m\u00fcssen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Das Factory-Design-Pattern ist ein leistungsf\u00e4higes Werkzeug zur Kapselung der Objekterstellung und zur Reduzierung der Kopplung in der Softwareentwicklung. Es bietet Flexibilit\u00e4t, Zentralisierung und Wartbarkeit und ist ein grundlegendes Muster, das jeder Java-Entwickler verstehen und anwenden sollte. Durch die Erweiterung zum Abstract Factory Pattern k\u00f6nnen noch komplexere und flexiblere Objektstrukturen realisiert werden, die eine einfache Anpassung und Erweiterung des Codes erm\u00f6glichen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einf\u00fchrung Das Factory-Design-Pattern, auch bekannt als Fabrikmuster, ist eines der bekanntesten und am h\u00e4ufigsten verwendeten Entwurfsmuster in der Softwareentwicklung. Es geh\u00f6rt zur Kategorie der Erzeugungsmuster (Creational Patterns), die sich mit der Erstellung von Objekten befassen, ohne die Logik der Erstellung zu spezifizieren. Das Hauptziel des Factory-Patterns besteht darin, die Instanziierung von Objekten zu zentralisieren und [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-359","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=359"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/359\/revisions"}],"predecessor-version":[{"id":360,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/359\/revisions\/360"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}