{"id":208,"date":"2025-10-05T20:38:25","date_gmt":"2025-10-05T18:38:25","guid":{"rendered":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/?p=208"},"modified":"2025-10-05T20:46:16","modified_gmt":"2025-10-05T18:46:16","slug":"wzorzec-projektowy-fabryka","status":"publish","type":"post","link":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/?p=208","title":{"rendered":"Wzorzec projektowy Fabryka"},"content":{"rendered":"\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Wprowadzenie<br><\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=2028272505  fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"212\" src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/workman-store-house-orange-helmet.jpg\" alt=\"\" class=\"wp-image-212\" srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/workman-store-house-orange-helmet-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:200\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/workman-store-house-orange-helmet-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:512\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/workman-store-house-orange-helmet-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/workman-store-house-orange-helmet-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1620\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/workman-store-house-orange-helmet-scaled.jpg 2048w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Designed by Freepik<\/figcaption><\/figure>\n<\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Wzorzec projektowy <strong>Fabryka<\/strong> nale\u017cy do grupy wzorc\u00f3w <strong>kreacyjnych<\/strong> i s\u0142u\u017cy do tworzenia obiekt\u00f3w bez konieczno\u015bci bezpo\u015bredniego okre\u015blania ich konkretnych klas.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><br><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Innymi s\u0142owy, Fabryka pozwala \u201ezleci\u0107\u201d tworzenie obiekt\u00f3w specjalnym klasom, kt\u00f3re wiedz\u0105, jak i jaki konkretny obiekt nale\u017cy utworzy\u0107.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">W praktyce oznacza to, \u017ce kod korzystaj\u0105cy z obiekt\u00f3w nie musi wiedzie\u0107, jak s\u0105 one tworzone \u2013 wystarczy, \u017ce poprosi Fabryk\u0119 o produkt.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Idea wzorca <\/strong>Fabryka<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>G\u0142\u00f3wna idea wzorca <strong>Fabryka<\/strong> polega na <strong>delegowaniu procesu tworzenia obiekt\u00f3w<\/strong> do specjalnych metod lub klas.<br>Zamiast tworzy\u0107 obiekty za pomoc\u0105 operatora <code>new<\/code>, korzystamy z metody fabrykuj\u0105cej, kt\u00f3ra zwraca odpowiedni typ produktu.<\/p>\n\n\n\n<p>Dzi\u0119ki temu mo\u017cemy \u0142atwo rozszerza\u0107 system o nowe typy obiekt\u00f3w bez modyfikowania istniej\u0105cego kodu \u2013 wystarczy doda\u0107 now\u0105 klas\u0119 produktu i jej fabryk\u0119.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Kluczowe elementy wzorca:<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>ConcreteCreator (Konkretny Tw\u00f3rca)<\/strong> \u2013 implementacja metody fabrykuj\u0105cej, tworz\u0105ca okre\u015blony produkt.<\/p>\n\n\n\n<p><strong>Product (Produkt)<\/strong> \u2013 interfejs lub klasa bazowa dla obiekt\u00f3w tworzonych przez fabryk\u0119,<\/p>\n\n\n\n<p><strong>ConcreteProduct (Konkretny Produkt)<\/strong> \u2013 konkretna implementacja produktu,<\/p>\n\n\n\n<p><strong>Creator (Tw\u00f3rca)<\/strong> \u2013 klasa deklaruj\u0105ca metod\u0119 fabrykuj\u0105c\u0105,<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1112686758  fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:640\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/9859.jpg\" alt=\"\" class=\"wp-image-213\" srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:640\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/9859-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:188\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/9859-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:480\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/9859-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:960\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/9859-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1728\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/9859-scaled.jpg 2048w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Designed by Freepik<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Przyk\u0142ad z prefabrykacji \u017celbetowej<br><\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1730452513  data-opt-src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/steel-bar-site-construction.jpg\"  decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"214\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20683%22%20width%3D%221024%22%20height%3D%22683%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22683%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-214\" old-srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/steel-bar-site-construction-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:200\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/steel-bar-site-construction-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:512\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/steel-bar-site-construction-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/steel-bar-site-construction-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1620\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/steel-bar-site-construction-scaled.jpg 2048w\" \/><figcaption class=\"wp-element-caption\">Designed by Freepik<\/figcaption><\/figure>\n<\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Wyobra\u017amy sobie zak\u0142ad prefabrykacji, kt\u00f3ry produkuje r\u00f3\u017cne <strong>typy element\u00f3w \u017celbetowych<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>S\u0142upy<\/strong>,<\/li>\n\n\n\n<li><strong>Belki<\/strong>,<\/li>\n\n\n\n<li><strong>P\u0142yty stropowe<\/strong>,<\/li>\n\n\n\n<li><strong>\u015aciany prefabrykowane<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Ka\u017cdy z tych element\u00f3w ma swoje parametry, ale ich tworzenie odbywa si\u0119 w ramach wsp\u00f3lnego procesu \u2013 zbrojenie, formowanie, wylewanie betonu, piel\u0119gnacja, kontrola jako\u015bci itd.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">W tym przypadku <strong>Fabryka<\/strong> mo\u017ce by\u0107 odpowiedzialna za tworzenie odpowiedniego typu elementu w zale\u017cno\u015bci od zapotrzebowania. Przyk\u0142adowo, klient mo\u017ce poprosi\u0107 o \u201ebelk\u0119\u201d, a fabryka zwr\u00f3ci gotowy obiekt klasy <code>BelkaPrefabrykowana<\/code>.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center\">Poni\u017cej przyk\u0142ad zastosowania wzorca <strong>Fabryka<\/strong> w kontek\u015bcie prefabrykacji \u017celbetowej:<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\n\/\/ Produkt \u2013 wsp\u00f3lny interfejs prefabrykat\u00f3w\ninterface PrefabElement {\n    void produkcja();\n}\n\n\/\/ Konkretne produkty\nclass Slup implements PrefabElement {\n    @Override\n    public void produkcja() {\n        System.out.println(&quot;Produkcja s\u0142upa \u017celbetowego: zbrojenie, szalowanie, betonowanie.&quot;);\n    }\n}\n\nclass Belka implements PrefabElement {\n    @Override\n    public void produkcja() {\n        System.out.println(&quot;Produkcja belki prefabrykowanej: zbrojenie, forma, piel\u0119gnacja betonu.&quot;);\n    }\n}\n\nclass Plyta implements PrefabElement {\n    @Override\n    public void produkcja() {\n        System.out.println(&quot;Produkcja p\u0142yty stropowej: zbrojenie siatk\u0105, betonowanie, wyg\u0142adzanie powierzchni.&quot;);\n    }\n}\n\n\/\/ Tw\u00f3rca (fabryka)\nabstract class PrefabFactory {\n    public abstract PrefabElement utworzPrefabElement();\n\n    \/\/ Szablon metody produkcji\n    public void procesProdukcji() {\n        PrefabElement element = utworzPrefabElement();\n        element.produkcja();\n        System.out.println(&quot;Kontrola jako\u015bci i przygotowanie do transportu.\\n&quot;);\n    }\n}\n\n\/\/ Konkretne fabryki\nclass SlupFactory extends PrefabFactory {\n    @Override\n    public PrefabElement utworzPrefabElement() {\n        return new Slup();\n    }\n}\n\nclass BelkaFactory extends PrefabFactory {\n    @Override\n    public PrefabElement utworzPrefabElement() {\n        return new Belka();\n    }\n}\n\nclass PlytaFactory extends PrefabFactory {\n    @Override\n    public PrefabElement utworzPrefabElement() {\n        return new Plyta();\n    }\n}\n\n\/\/ Klasa testowa\npublic class Main {\n    public static void main(String&#x5B;] args) {\n        PrefabFactory slupFabryka = new SlupFactory();\n        PrefabFactory belkaFabryka = new BelkaFactory();\n        PrefabFactory plytaFabryka = new PlytaFactory();\n\n        slupFabryka.procesProdukcji();\n        belkaFabryka.procesProdukcji();\n        plytaFabryka.procesProdukcji();\n    }\n}\n<\/pre><\/div><\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Zalety tego podej\u015bcia<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1659127048  data-opt-src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/still-life-business-roles-with-various-mechanism-pieces.jpg\"  decoding=\"async\" width=\"1024\" height=\"683\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20683%22%20width%3D%221024%22%20height%3D%22683%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22683%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-215\" old-srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/still-life-business-roles-with-various-mechanism-pieces-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:200\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/still-life-business-roles-with-various-mechanism-pieces-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:512\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/still-life-business-roles-with-various-mechanism-pieces-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/still-life-business-roles-with-various-mechanism-pieces-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1620\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/still-life-business-roles-with-various-mechanism-pieces-scaled.jpg 2048w\" \/><figcaption class=\"wp-element-caption\">Designed by Freepik<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Elastyczno\u015b\u0107<\/strong> \u2013 \u0142atwe dodawanie nowych typ\u00f3w prefabrykat\u00f3w (np. \u201e\u015bciana\u201d czy \u201efundament\u201d) bez zmiany istniej\u0105cego kodu,<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Hermetyzacja logiki tworzenia<\/strong> \u2013 szczeg\u00f3\u0142y budowy element\u00f3w s\u0105 ukryte w fabrykach,<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Zgodno\u015b\u0107 z zasad\u0105 otwarte-zamkni\u0119te (OCP)<\/strong> \u2013 mo\u017cna rozszerza\u0107 funkcjonalno\u015b\u0107 bez modyfikowania istniej\u0105cych klas,<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>\u0141atwiejsze testowanie<\/strong> \u2013 poszczeg\u00f3lne fabryki mo\u017cna testowa\u0107 niezale\u017cnie.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Wady<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1757401208  data-opt-src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/top-view-wooden-pawns-arrangement.jpg\"  decoding=\"async\" width=\"1024\" height=\"683\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20683%22%20width%3D%221024%22%20height%3D%22683%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22683%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-216\" old-srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/top-view-wooden-pawns-arrangement-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:200\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/top-view-wooden-pawns-arrangement-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:512\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/top-view-wooden-pawns-arrangement-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/top-view-wooden-pawns-arrangement-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1620\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/top-view-wooden-pawns-arrangement-scaled.jpg 2048w\" \/><figcaption class=\"wp-element-caption\">Designed by Freepik<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Wzrost liczby klas<\/strong> \u2013 ka\u017cda nowa kategoria produktu wymaga stworzenia nowej fabryki,<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Dodatkowa warstwa po\u015brednia<\/strong> \u2013 dla prostych system\u00f3w mo\u017ce by\u0107 nadmiarowa,<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Potrzeba dobrej struktury dziedziczenia<\/strong> \u2013 niepoprawne zaprojektowanie hierarchii produkt\u00f3w i fabryk mo\u017ce prowadzi\u0107 do trudnej w utrzymaniu architektury<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wprowadzenie Wzorzec projektowy Fabryka nale\u017cy do grupy wzorc\u00f3w kreacyjnych i s\u0142u\u017cy do tworzenia obiekt\u00f3w bez konieczno\u015bci bezpo\u015bredniego okre\u015blania ich konkretnych klas. Innymi s\u0142owy, Fabryka pozwala \u201ezleci\u0107\u201d tworzenie obiekt\u00f3w specjalnym klasom, kt\u00f3re wiedz\u0105, jak i jaki konkretny obiekt nale\u017cy utworzy\u0107. W praktyce oznacza to, \u017ce kod korzystaj\u0105cy z obiekt\u00f3w nie musi wiedzie\u0107, jak s\u0105 one tworzone [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":211,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-208","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wzorce-projektowe"],"_links":{"self":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=208"}],"version-history":[{"count":4,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions"}],"predecessor-version":[{"id":222,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions\/222"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/media\/211"}],"wp:attachment":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=208"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}