{"id":4113,"date":"2025-08-30T16:51:12","date_gmt":"2025-08-30T14:51:12","guid":{"rendered":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/?page_id=4113"},"modified":"2026-04-09T13:00:50","modified_gmt":"2026-04-09T11:00:50","slug":"fabryka","status":"publish","type":"page","link":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/fabryka\/","title":{"rendered":"Factory"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"4113\" class=\"elementor elementor-4113\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1fc37b42 e-con-full e-flex e-con e-parent\" data-id=\"1fc37b42\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-72d8886 e-flex e-con-boxed e-con e-child\" data-id=\"72d8886\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7517aa69 elementor-icon-list--layout-inline elementor-mobile-align-center elementor-align-left elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"7517aa69\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-envelope1\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">natalia.kaczynska.programista@gmail.com<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e40abe1 elementor-widget elementor-widget-shortcode\" data-id=\"e40abe1\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"mega-menu-wrap-secondary_menu\" class=\"mega-menu-wrap\"><div class=\"mega-menu-toggle\"><div class=\"mega-toggle-blocks-left\"><\/div><div class=\"mega-toggle-blocks-center\"><\/div><div class=\"mega-toggle-blocks-right\"><div class='mega-toggle-block mega-menu-toggle-animated-block mega-toggle-block-0' id='mega-toggle-block-0'><button aria-label=\"Show\/hide menu\" class=\"mega-toggle-animated mega-toggle-animated-slider\" type=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-controls=\"mega-menu-secondary_menu\">\n                  <span class=\"mega-toggle-animated-box\">\n                    <span class=\"mega-toggle-animated-inner\"><\/span>\n                  <\/span>\n                <\/button><\/div><\/div><\/div><ul id=\"mega-menu-secondary_menu\" class=\"mega-menu max-mega-menu mega-menu-horizontal mega-no-js\" data-event=\"hover\" data-effect=\"fade_up\" data-effect-speed=\"400\" data-effect-mobile=\"slide\" data-effect-speed-mobile=\"400\" data-mobile-force-width=\"false\" data-second-click=\"go\" data-document-click=\"collapse\" data-vertical-behaviour=\"standard\" data-breakpoint=\"768\" data-unbind=\"true\" data-mobile-state=\"collapse_all\" data-mobile-direction=\"vertical\" data-hover-intent-timeout=\"300\" data-hover-intent-interval=\"100\"><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-align-bottom-left mega-menu-flyout mega-menu-item-4547\" id=\"mega-menu-item-4547\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/porftolio-v2\/\">Portfolio<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-home mega-align-bottom-left mega-menu-flyout mega-menu-item-3974\" id=\"mega-menu-item-3974\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/\">Homepage<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-align-bottom-left mega-menu-flyout mega-menu-item-3975\" id=\"mega-menu-item-3975\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/about\/\">About me<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-menu-megamenu mega-menu-grid mega-align-bottom-left mega-menu-grid mega-menu-item-4304\" id=\"mega-menu-item-4304\"><a class=\"mega-menu-link\" href=\"#\" aria-expanded=\"false\" aria-controls=\"mega-sub-menu-4304\">Articles<span class=\"mega-indicator\" aria-hidden=\"true\"><\/span><\/a>\n<ul class=\"mega-sub-menu\" role='presentation' id='mega-sub-menu-4304'>\n<li class=\"mega-menu-row\" id=\"mega-menu-4304-0\">\n\t<ul class=\"mega-sub-menu\" style='--columns:2' role='presentation'>\n<li class=\"mega-menu-column mega-menu-columns-3-of-2\" style=\"--columns:2; --span:3\" id=\"mega-menu-4304-0-0\">\n\t\t<ul class=\"mega-sub-menu\">\n<li class=\"mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-disable-link mega-menu-item-4306\" id=\"mega-menu-item-4306\"><a class=\"mega-menu-link\" tabindex=\"0\">Design patterns<span class=\"mega-indicator\" aria-hidden=\"true\"><\/span><\/a>\n\t\t\t<ul class=\"mega-sub-menu\" id='mega-sub-menu-4306'>\n<li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4314\" id=\"mega-menu-item-4314\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/elementor-4099\/\">Strategy<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4313\" id=\"mega-menu-item-4313\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/budowniczy\/\">Builder<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4312\" id=\"mega-menu-item-4312\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/fabryka\/\">Factory<\/a><\/li>\t\t\t<\/ul>\n<\/li><li class=\"mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-disable-link mega-menu-item-4305\" id=\"mega-menu-item-4305\"><a class=\"mega-menu-link\" tabindex=\"0\">SOLID<span class=\"mega-indicator\" aria-hidden=\"true\"><\/span><\/a>\n\t\t\t<ul class=\"mega-sub-menu\" id='mega-sub-menu-4305'>\n<li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4311\" id=\"mega-menu-item-4311\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/elementor-4232\/\">Single responsibility<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4310\" id=\"mega-menu-item-4310\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/elementor-4246\/\">Open-Closed Principle<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4309\" id=\"mega-menu-item-4309\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/liskov-substitution-principle\/\">Liskov Substitution Principle<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4308\" id=\"mega-menu-item-4308\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/elementor-4278\/\">Interface Segregation Principle<\/a><\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-4307\" id=\"mega-menu-item-4307\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/elementor-4292\/\">Dependency Inversion Principle<\/a><\/li>\t\t\t<\/ul>\n<\/li>\t\t<\/ul>\n<\/li>\t<\/ul>\n<\/li><\/ul>\n<\/li><li class=\"mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-align-bottom-left mega-menu-flyout mega-menu-item-3976\" id=\"mega-menu-item-3976\"><a class=\"mega-menu-link\" href=\"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/contact\/\">Contact<\/a><\/li><\/ul><\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5ee9c7b e-flex e-con-boxed e-con e-parent\" data-id=\"5ee9c7b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bdc8b52 elementor-widget elementor-widget-heading\" data-id=\"bdc8b52\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Factory (Fabryka)<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-291bf00 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"291bf00\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48918ca elementor-widget elementor-widget-text-editor\" data-id=\"48918ca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Za\u0142\u00f3\u017cmy, \u017ce chcemy napisa\u0107 prosty program, kt\u00f3ry wypisuje jak\u0105 standardowo mamy pogod\u0119 w zale\u017cno\u015bci od pory roku. W najprostszym podej\u015bciu tworzymy obiekty p\u00f3r roku za pomoc\u0105 operatora <code data-start=\"652\" data-end=\"657\">new<\/code> bezpo\u015brednio w kodzie. Takie rozwi\u0105zanie dzia\u0142a, ale ma istotne wady:<\/p><ul data-start=\"804\" data-end=\"1038\"><li data-start=\"804\" data-end=\"876\"><p data-start=\"806\" data-end=\"876\">klasa korzystaj\u0105ca z obiekt\u00f3w musi <strong data-start=\"841\" data-end=\"873\">zna\u0107 szczeg\u00f3\u0142y ich tworzenia<\/strong>,<\/p><\/li><li data-start=\"877\" data-end=\"974\"><p data-start=\"879\" data-end=\"974\">je\u015bli chcemy zmieni\u0107 logik\u0119 inicjalizacji obiekt\u00f3w, musimy modyfikowa\u0107 wiele fragment\u00f3w kodu,<\/p><\/li><li data-start=\"975\" data-end=\"1038\"><p data-start=\"977\" data-end=\"1038\">kod staje si\u0119 trudniejszy do utrzymania i mniej elastyczny.<\/p><\/li><\/ul><p data-start=\"1040\" data-end=\"1124\">Poni\u017cej przedstawiam przyk\u0142ad kodu <strong data-start=\"1073\" data-end=\"1121\">bez zastosowania wzorca projektowego Factory<\/strong>:<\/p><p data-start=\"1040\" data-end=\"1124\">Napierw tworzymy interfejs Season:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0cdd9a7 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"0cdd9a7\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\ninterface Season {\r\n    void showWeather();\r\n}\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8348dcd elementor-widget elementor-widget-text-editor\" data-id=\"8348dcd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Nast\u0119pnie tworzymy klasy odpowiadaj\u0105ce porom roku i implementujemy interfejs. Np. klasa dla jesieni:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ab98bea elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"ab98bea\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class Autumn implements Season{\r\n    public void showWeather(){\r\n        System.out.println(&quot;Autumn - it&#039;s rainy and cloudy&quot;);\r\n    }\r\n}\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b993cdf e-flex e-con-boxed e-con e-parent\" data-id=\"b993cdf\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ef33299 elementor-widget elementor-widget-text-editor\" data-id=\"ef33299\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Podobnie tworzymy klasy dla pozosta\u0142ych p\u00f3r roku. Na koniec, wywo\u0142ujemy obiekty tych klas z u\u017cyciem wy\u017cej wspomnianego operator new:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d529e0c elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"d529e0c\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class Demo {\r\n    public static void main(String&#x5B;] args){\r\n        Season spring = new Spring();\r\n        spring.showWeather();\r\n\r\n        Season winter = new Winter();\r\n        winter.showWeather();\r\n\r\n        Season summer = new Summer();\r\n        summer.showWeather();\r\n\r\n        Season autumn = new Autumn();\r\n        autumn.showWeather();\r\n    }\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cd46e60 e-flex e-con-boxed e-con e-parent\" data-id=\"cd46e60\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-56a25cf elementor-widget elementor-widget-text-editor\" data-id=\"56a25cf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wzorzec Fabryka mo\u017cna podzieli\u0107 na dwa rodzaje.<\/p><p>Jednym z nich jest <strong>metoda fabrykuj\u0105ca. <\/strong>Poni\u017cej pokazuj\u0119 jak ona dzia\u0142a, modyfikuj\u0105c przyk\u0142ad z porami roku:<\/p><p>Najpierw tworzymy klas\u0119 abstrakcyjn\u0105 Factory:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a43f321 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"a43f321\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic abstract class Factory {\r\n    abstract public Season getSeason(SeasonType type);\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6b59f92 e-flex e-con-boxed e-con e-parent\" data-id=\"6b59f92\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f14ec28 elementor-widget elementor-widget-text-editor\" data-id=\"f14ec28\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Nast\u0119pnie enum SeasonType:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c935b4e elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"c935b4e\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic enum SeasonType {\r\n    AUTUMN, SUMMER, WINTER, SPRING;\r\n}\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-17b09e8 elementor-widget elementor-widget-text-editor\" data-id=\"17b09e8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Nast\u0119pnie implementujemy fabryk\u0119 konkretn\u0105:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9953b59 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"9953b59\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic class WeatherFactory extends Factory{\r\n    @Override\r\n    public Season getSeason(SeasonType type) {\r\n        switch(type){\r\n            case SPRING:\r\n                return new Spring();\r\n            case AUTUMN:\r\n                return new Autumn();\r\n            case SUMMER:\r\n                return new Summer();\r\n            case WINTER:\r\n                return new Winter();\r\n            default:\r\n                throw new UnsupportedOperationException(&quot;No such type&quot;);\r\n        }\r\n    }\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-31d342b e-flex e-con-boxed e-con e-parent\" data-id=\"31d342b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-706c0ca elementor-widget elementor-widget-text-editor\" data-id=\"706c0ca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>W klasie Demo:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c7426e3 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"c7426e3\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport season.*;\r\n\r\npublic class Demo {\r\n    public static void main(String&#x5B;] args){\r\n        Factory factory = new WeatherFactory();\r\n\r\n        Season spring = factory.getSeason(SeasonType.SPRING);\r\n        spring.showWeather();\r\n        Season winter = factory.getSeason(SeasonType.WINTER);\r\n        winter.showWeather();\r\n        Season summer = factory.getSeason(SeasonType.SUMMER);\r\n        summer.showWeather();\r\n        Season autumn = factory.getSeason(SeasonType.AUTUMN);\r\n        autumn.showWeather();\r\n    }\r\n}\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-25aa9d1 e-flex e-con-boxed e-con e-parent\" data-id=\"25aa9d1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-53d58c1 elementor-widget elementor-widget-text-editor\" data-id=\"53d58c1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Drugi rodzaj fabryki, to <strong>fabryka abstrakcyjna<\/strong>. Tutaj mamy interfejs fabryki, kt\u00f3ry tworzy rodziny powi\u0105zanych obietk\u00f3w (w naszym przyk\u0142adzie zwi\u0105zane z porami roku), zamiast pojedynczego obiektu. Za\u0142\u00f3\u017cmy, \u017ce dana pora roku mo\u017ce mie\u0107 cechy charakterystyczne, jak krajobraz, czy typ ubra\u0144. Poni\u017cej zmodyfikuj\u0119 kod tak, aby uwzgl\u0119dni\u0107 ten wzorzec, dla uproszczenia i przejrzysto\u015bci odwo\u0142am si\u0119 tylko do jesieni i lata, ale oczywi\u015bcie podobnie mo\u017cna zrobi\u0107 dla pozosta\u0142ych p\u00f3r.<\/p><p>Najpierw tworz\u0119 interfejs dla krajobrazu:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5192317 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"5192317\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic interface Landscape {\r\n    public String description();\r\n}\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3213b74 e-flex e-con-boxed e-con e-parent\" data-id=\"3213b74\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4919b56 elementor-widget elementor-widget-text-editor\" data-id=\"4919b56\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Podobnie robi\u0119 dla typu ubra\u0144:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e0551f elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"8e0551f\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic interface ClothesType {\r\n    public String description();\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4e18e6b e-flex e-con-boxed e-con e-parent\" data-id=\"4e18e6b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-40c172a elementor-widget elementor-widget-text-editor\" data-id=\"40c172a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Teraz dla jesieni, tworz\u0119 klas\u0119, kt\u00f3ra implementuje klas\u0119 krajobrazu:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fea0212 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"fea0212\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\nclass AutumnLandscape implements Landscape {\r\n    public String description() {\r\n        return &quot;Falling leaves, fog.&quot;;\r\n    }\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f994230 e-flex e-con-boxed e-con e-parent\" data-id=\"f994230\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-81b8305 elementor-widget elementor-widget-text-editor\" data-id=\"81b8305\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Teraz klasa implementuj\u0105ca typ ubra\u0144 dla jesieni:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6ef3ff elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"b6ef3ff\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic class AutumnClothesType implements ClothesType{\r\n    public String description() {\r\n        return &quot;Wellies and a raincoat.&quot;;\r\n    }\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-41b4535 e-flex e-con-boxed e-con e-parent\" data-id=\"41b4535\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d2893b2 elementor-widget elementor-widget-text-editor\" data-id=\"d2893b2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dla pory roku lato robi\u0119 analogicznie, oczywi\u015bcie zmieniaj\u0105c jej opisy.<\/p><p>Nast\u0119pnie tworz\u0119 <strong>fabryk\u0119 abstrakcyjn\u0105<\/strong>:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb19d02 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"fb19d02\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic interface FactorySeasons {\r\n    public Landscape createLandscape();\r\n    public ClothesType createClothes();\r\n}\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-889589f e-flex e-con-boxed e-con e-parent\" data-id=\"889589f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a3b34d5 elementor-widget elementor-widget-text-editor\" data-id=\"a3b34d5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Teraz nale\u017cy utworzy\u0107 <strong>konkretne fabryki.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5032e42 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"5032e42\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic class AutumnFactory implements FactorySeasons{\r\n    public Landscape createLandscape() {\r\n        return new AutumnLandscape();\r\n    }\r\n\r\n    public ClothesType createClothes() {\r\n        return new AutumnClothesType();\r\n    }\r\n}\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4d97f51 e-flex e-con-boxed e-con e-parent\" data-id=\"4d97f51\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8d275ef elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"8d275ef\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage season;\r\n\r\npublic class SummerFactory implements FactorySeasons {\r\n    public Landscape createLandscape() {\r\n        return new SummerLandscape();\r\n    }\r\n\r\n    public ClothesType createClothes() {\r\n        return new SummerClothesType();\r\n    }\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-42fbf8b e-flex e-con-boxed e-con e-parent\" data-id=\"42fbf8b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6409b7d elementor-widget elementor-widget-text-editor\" data-id=\"6409b7d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Na koniec implementuj\u0119 klas\u0119 Demo.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-408ec1d elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"408ec1d\" data-element_type=\"widget\" data-widget_type=\"wp-widget-custom_html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"textwidget custom-html-widget\"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport season.*;\r\n\r\npublic class Demo {\r\n    public static void showSeasonDescription(FactorySeasons factory) {\r\n        Landscape landscape = factory.createLandscape();\r\n        ClothesType clothes = factory.createClothes();\r\n\r\n        System.out.println(&quot;Landscape: &quot; + landscape.description());\r\n        System.out.println(&quot;Clothes type: &quot; + clothes.description());\r\n    }\r\n\r\n    public static void main(String&#x5B;] args) {\r\n        System.out.println(&quot;Summer: &quot;);\r\n        showSeasonDescription(new SummerFactory());\r\n        System.out.println();\r\n        System.out.println(&quot;Autumn: &quot;);\r\n        showSeasonDescription(new AutumnFactory());\r\n    }\r\n}\r\n\r\n<\/pre><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n    <div class=\"xs_social_share_widget xs_share_url after_content \t\tmain_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content\">\n\n\t\t\n        <ul>\n\t\t\t        <\/ul>\n    <\/div>","protected":false},"excerpt":{"rendered":"<p>natalia.kaczynska.programista@gmail.com Factory (Fabryka) Za\u0142\u00f3\u017cmy, \u017ce chcemy napisa\u0107 prosty program, kt\u00f3ry wypisuje jak\u0105 standardowo mamy pogod\u0119 w zale\u017cno\u015bci od pory roku. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"postBodyCss":"","postBodyMargin":[],"postBodyPadding":[],"postBodyBackground":{"backgroundType":"classic","gradient":""},"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-4113","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/pages\/4113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/comments?post=4113"}],"version-history":[{"count":11,"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/pages\/4113\/revisions"}],"predecessor-version":[{"id":4887,"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/pages\/4113\/revisions\/4887"}],"wp:attachment":[{"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/media?parent=4113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}