{"id":4117,"date":"2025-08-29T19:49:50","date_gmt":"2025-08-29T17:49:50","guid":{"rendered":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/?page_id=4117"},"modified":"2026-04-09T12:56:39","modified_gmt":"2026-04-09T10:56:39","slug":"budowniczy","status":"publish","type":"page","link":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/budowniczy\/","title":{"rendered":"Builder"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"4117\" class=\"elementor elementor-4117\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5c7bbe9 e-con-full e-flex e-con e-parent\" data-id=\"5c7bbe9\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-29252f0c e-flex e-con-boxed e-con e-child\" data-id=\"29252f0c\" 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-47e9c526 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=\"47e9c526\" 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-2cc853f elementor-widget elementor-widget-shortcode\" data-id=\"2cc853f\" 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-61b1fa5 e-flex e-con-boxed e-con e-parent\" data-id=\"61b1fa5\" 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-905dc63 elementor-widget elementor-widget-heading\" data-id=\"905dc63\" 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\">Builder (Budowniczy)<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4501c7f elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"4501c7f\" 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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a8a2d29 e-flex e-con-boxed e-con e-parent\" data-id=\"a8a2d29\" 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-147983f elementor-widget elementor-widget-text-editor\" data-id=\"147983f\" 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 data-start=\"406\" data-end=\"576\">Wyobra\u017amy sobie, \u017ce chcemy stworzy\u0107 klas\u0119 reprezentuj\u0105c\u0105 dom. Dom mo\u017ce sk\u0142ada\u0107 si\u0119 z r\u00f3\u017cnych element\u00f3w, takich jak \u015bciany, pod\u0142ogi, pokoje, dach, okna, drzwi, czy gara\u017c.<\/p><p data-start=\"578\" data-end=\"746\">Najprostszym rozwi\u0105zaniem jest dodanie wszystkich tych p\u00f3l do klasy i stworzenie kilku konstruktor\u00f3w, kt\u00f3re pozwol\u0105 zbudowa\u0107 obiekt <code data-start=\"710\" data-end=\"717\">House<\/code> z r\u00f3\u017cn\u0105 liczb\u0105 parametr\u00f3w.<\/p><p data-start=\"748\" data-end=\"810\">Takie podej\u015bcie dzia\u0142a, ale szybko staje si\u0119 problematyczne:<\/p><ul data-start=\"811\" data-end=\"1060\"><li data-start=\"811\" data-end=\"910\"><p data-start=\"813\" data-end=\"910\">konstruktor z wieloma argumentami jest trudny do czytania i \u0142atwo pomyli\u0107 kolejno\u015b\u0107 parametr\u00f3w,<\/p><\/li><li data-start=\"911\" data-end=\"997\"><p data-start=\"913\" data-end=\"997\">konieczne jest tworzenie wielu przeci\u0105\u017conych konstruktor\u00f3w dla r\u00f3\u017cnych kombinacji,<\/p><\/li><li data-start=\"998\" data-end=\"1060\"><p data-start=\"1000\" data-end=\"1060\">kod staje si\u0119 mniej elastyczny i trudniejszy w utrzymaniu.<\/p><\/li><\/ul><p data-start=\"1062\" data-end=\"1145\">Poni\u017cej przedstawiam przyk\u0142ad kodu <strong data-start=\"1097\" data-end=\"1142\">bez u\u017cycia wzorca projektowego Budowniczy.\u00a0<\/strong><\/p><p data-start=\"1062\" data-end=\"1145\">Klasa House:<\/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-3bc95ce elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"3bc95ce\" 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 house;\r\n\r\npublic class House {\r\n    private String walls;\r\n    private String floors;\r\n    private String rooms;\r\n    private String roof;\r\n    private String windows;\r\n    private String doors;\r\n    private String garage;\r\n\r\n    public House(String walls, String floors, String rooms, String roof, String windows, String doors, String garage) {\r\n        this.walls = walls;\r\n        this.floors = floors;\r\n        this.rooms = rooms;\r\n        this.roof = roof;\r\n        this.windows = windows;\r\n        this.doors = doors;\r\n        this.garage = garage;\r\n    }\r\n\r\n    public House(String roof, String walls, String floors) {\r\n        this.roof = roof;\r\n        this.walls = walls;\r\n        this.floors = floors;\r\n    }\r\n\r\n    public House(String walls, String floors, String rooms, String roof, String windows, String doors) {\r\n        this.walls = walls;\r\n        this.floors = floors;\r\n        this.rooms = rooms;\r\n        this.roof = roof;\r\n        this.windows = windows;\r\n        this.doors = doors;\r\n    }\r\n\r\n    public String getWalls() {\r\n        return walls;\r\n    }\r\n\r\n    public String getFloors() {\r\n        return floors;\r\n    }\r\n\r\n    public String getRooms() {\r\n        return rooms;\r\n    }\r\n\r\n    public String getRoof() {\r\n        return roof;\r\n    }\r\n\r\n    public String getWindows() {\r\n        return windows;\r\n    }\r\n\r\n    public String getDoors() {\r\n        return doors;\r\n    }\r\n\r\n    public String getGarage() {\r\n        return garage;\r\n    }\r\n\r\n    public void setWalls(String walls) {\r\n        this.walls = walls;\r\n    }\r\n\r\n    public void setFloors(String floors) {\r\n        this.floors = floors;\r\n    }\r\n\r\n    public void setRooms(String rooms) {\r\n        this.rooms = rooms;\r\n    }\r\n\r\n    public void setRoof(String roof) {\r\n        this.roof = roof;\r\n    }\r\n\r\n    public void setWindows(String windows) {\r\n        this.windows = windows;\r\n    }\r\n\r\n    public void setDoors(String doors) {\r\n        this.doors = doors;\r\n    }\r\n\r\n    public void setGarage(String garage) {\r\n        this.garage = garage;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        return &quot;House{&quot; +\r\n                &quot;walls=&#039;&quot; + walls + &#039;\\&#039;&#039; +\r\n                &quot;, floors=&#039;&quot; + floors + &#039;\\&#039;&#039; +\r\n                &quot;, rooms=&#039;&quot; + rooms + &#039;\\&#039;&#039; +\r\n                &quot;, roof=&#039;&quot; + roof + &#039;\\&#039;&#039; +\r\n                &quot;, windows=&#039;&quot; + windows + &#039;\\&#039;&#039; +\r\n                &quot;, doors=&#039;&quot; + doors + &#039;\\&#039;&#039; +\r\n                &quot;, garage=&#039;&quot; + garage + &#039;\\&#039;&#039; +\r\n                &#039;}&#039;;\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<div class=\"elementor-element elementor-element-8376656 elementor-widget elementor-widget-text-editor\" data-id=\"8376656\" 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, zwr\u00f3\u0107 uwag\u0119 na 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-ddc6db6 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"ddc6db6\" 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: plain; title: ; notranslate\" title=\"\">\r\nimport house.House;\r\n\r\npublic class Demo {\r\n    public static void main(String args&#x5B;]){\r\n        House house1 = new House(&quot;walls&quot;, &quot;floors&quot;, &quot;rooms&quot;,&quot;windows&quot;, &quot;doors&quot;, &quot;garage&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<div class=\"elementor-element elementor-element-7e98b96 elementor-widget elementor-widget-text-editor\" data-id=\"7e98b96\" 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 House, tych konstruktor\u00f3w mo\u017ce by\u0107 znacznie wi\u0119cej, przez co stworzy si\u0119 ba\u0142agan w kodzie i b\u0119dziemy mie\u0107 problem ze wskazaniem w klasie g\u0142\u00f3wnej, do jakich i ilu parametr\u00f3w konstruktora mamy si\u0119 odwo\u0142a\u0107 przy wywo\u0142ywaniu obiekt\u00f3w house. Tutaj z pomoc\u0105 przychodzi w\u0142a\u015bnie wzorzec Builder.<\/p><p>Wzorzec ten mo\u017cemy podzieli\u0107 na dwa rodzaje.<\/p><p>Pierwszy do kt\u00f3rego si\u0119 odnios\u0119, to budowniczy <strong>z klas\u0105 wewn\u0119trzn\u0105<\/strong>. Sp\u00f3jrzmy na poni\u017cszy kod:<\/p>\t\t\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<div class=\"elementor-element elementor-element-839af68 e-flex e-con-boxed e-con e-parent\" data-id=\"839af68\" 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-2c57d56 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"2c57d56\" 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 house;\r\n\r\npublic class House {\r\n    private String walls;\r\n    private String floors;\r\n    private String rooms;\r\n    private String roof;\r\n    private String windows;\r\n    private String doors;\r\n    private String garage;\r\n\r\n\r\n    private House(HouseBuilder houseBuilder){\r\n        this.walls = houseBuilder.walls;\r\n        this.floors = houseBuilder.floors;\r\n        this.rooms = houseBuilder.rooms;\r\n        this.roof = houseBuilder.roof;\r\n        this.doors = houseBuilder.doors;\r\n        this.windows = houseBuilder.windows;\r\n        this.garage = houseBuilder.garage;\r\n    }\r\n\r\n    public String getWalls() {\r\n        return walls;\r\n    }\r\n\r\n    public String getFloors() {\r\n        return floors;\r\n    }\r\n\r\n    public String getRooms() {\r\n        return rooms;\r\n    }\r\n\r\n    public String getRoof() {\r\n        return roof;\r\n    }\r\n\r\n    public String getWindows() {\r\n        return windows;\r\n    }\r\n\r\n    public String getDoors() {\r\n        return doors;\r\n    }\r\n\r\n    public String getGarage() {\r\n        return garage;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        return &quot;House{&quot; +\r\n                &quot;walls=&#039;&quot; + walls + &#039;\\&#039;&#039; +\r\n                &quot;, floors=&#039;&quot; + floors + &#039;\\&#039;&#039; +\r\n                &quot;, rooms=&#039;&quot; + rooms + &#039;\\&#039;&#039; +\r\n                &quot;, roof=&#039;&quot; + roof + &#039;\\&#039;&#039; +\r\n                &quot;, windows=&#039;&quot; + windows + &#039;\\&#039;&#039; +\r\n                &quot;, doors=&#039;&quot; + doors + &#039;\\&#039;&#039; +\r\n                &quot;, garage=&#039;&quot; + garage + &#039;\\&#039;&#039; +\r\n                &#039;}&#039;;\r\n    }\r\n\r\n    public static class HouseBuilder{\r\n        private String walls;\r\n        private String floors;\r\n        private String rooms;\r\n        private String roof;\r\n        private String windows;\r\n        private String doors;\r\n        private String garage;\r\n\r\n        public HouseBuilder buildWalls(String walls){\r\n            this.walls = walls;\r\n            return this;\r\n        }\r\n\r\n        public HouseBuilder buildFloors(String floors){\r\n            this.floors = floors;\r\n            return this;\r\n        }\r\n\r\n        public HouseBuilder buildRooms(String rooms){\r\n            this.rooms = rooms;\r\n            return this;\r\n        }\r\n\r\n        public HouseBuilder buildRoof(String roof){\r\n            this.roof = roof;\r\n            return this;\r\n        }\r\n\r\n        public HouseBuilder buildWindows(String windows){\r\n            this.windows = windows;\r\n            return this;\r\n        }\r\n\r\n        public HouseBuilder buildDoors(String doors){\r\n            this.doors = doors;\r\n            return this;\r\n        }\r\n\r\n        public HouseBuilder buildGarage(String garage){\r\n            this.garage = garage;\r\n            return this;\r\n        }\r\n\r\n        public House build(){\r\n            return new House(this);\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<div class=\"elementor-element elementor-element-8a77125 elementor-widget elementor-widget-text-editor\" data-id=\"8a77125\" 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\u00a0 klasie Demo mo\u017cemy teraz odwo\u0142a\u0107 si\u0119 do dowolnych funkcji &#8222;buduj\u0105cych&#8221; wspomniany dom. Mo\u017cemy na przyk\u0142ad pomin\u0105\u0107 funkcj\u0119 dodaj\u0105c\u0105 gara\u017c:<\/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-c7afef1 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"c7afef1\" 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 house.House;\r\n\r\npublic class Demo {\r\n    public static void main(String args&#x5B;]){\r\n \/\/       House house1 = new House(&quot;walls&quot;, &quot;floors&quot;, &quot;rooms&quot;,&quot;windows&quot;, &quot;doors&quot;, &quot;garage&quot;);\r\n\r\n        House house = new House.HouseBuilder()\r\n                .buildWalls(&quot;walls&quot;)\r\n                .buildFloors(&quot;floors&quot;)\r\n                .buildRoof(&quot;roof&quot;)\r\n                .buildRooms(&quot;rooms&quot;)\r\n                .buildWindows(&quot;windows&quot;)\r\n                .buildDoors(&quot;doors&quot;)\r\n                .build();\r\n\r\n        System.out.println(house);\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<div class=\"elementor-element elementor-element-205ac34 elementor-widget elementor-widget-text-editor\" data-id=\"205ac34\" 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>Kolejny rodzaj wzorca &#8211; <strong>budowniczy klasyczny.<\/strong><\/p><p>Klasa House:<\/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-85e0db6 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"85e0db6\" 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 house;\r\n\r\npublic class House {\r\n    private String walls;\r\n    private String floors;\r\n    private String rooms;\r\n    private String roof;\r\n    private String windows;\r\n    private String doors;\r\n    private String garage;\r\n\r\n    public String getWalls() {\r\n        return walls;\r\n    }\r\n\r\n    public String getFloors() {\r\n        return floors;\r\n    }\r\n\r\n    public String getRooms() {\r\n        return rooms;\r\n    }\r\n\r\n    public String getRoof() {\r\n        return roof;\r\n    }\r\n\r\n    public String getWindows() {\r\n        return windows;\r\n    }\r\n\r\n    public String getDoors() {\r\n        return doors;\r\n    }\r\n\r\n    public String getGarage() {\r\n        return garage;\r\n    }\r\n\r\n    public void setWalls(String walls) {\r\n        this.walls = walls;\r\n    }\r\n\r\n    public void setFloors(String floors) {\r\n        this.floors = floors;\r\n    }\r\n\r\n    public void setRooms(String rooms) {\r\n        this.rooms = rooms;\r\n    }\r\n\r\n    public void setRoof(String roof) {\r\n        this.roof = roof;\r\n    }\r\n\r\n    public void setWindows(String windows) {\r\n        this.windows = windows;\r\n    }\r\n\r\n    public void setDoors(String doors) {\r\n        this.doors = doors;\r\n    }\r\n\r\n    public void setGarage(String garage) {\r\n        this.garage = garage;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        return &quot;House{&quot; +\r\n                &quot;walls=&#039;&quot; + walls + &#039;\\&#039;&#039; +\r\n                &quot;, floors=&#039;&quot; + floors + &#039;\\&#039;&#039; +\r\n                &quot;, rooms=&#039;&quot; + rooms + &#039;\\&#039;&#039; +\r\n                &quot;, roof=&#039;&quot; + roof + &#039;\\&#039;&#039; +\r\n                &quot;, windows=&#039;&quot; + windows + &#039;\\&#039;&#039; +\r\n                &quot;, doors=&#039;&quot; + doors + &#039;\\&#039;&#039; +\r\n                &quot;, garage=&#039;&quot; + garage + &#039;\\&#039;&#039; +\r\n                &#039;}&#039;;\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<div class=\"elementor-element elementor-element-b8c7d3d elementor-widget elementor-widget-text-editor\" data-id=\"b8c7d3d\" 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 interfejs HouseBuilder:<\/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-53899b9 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"53899b9\" 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 house;\r\n\r\npublic interface HouseBuilder {\r\n    void buildDoors();\r\n    void buildFloors();\r\n    void buildWalls();\r\n    void buildRooms();\r\n    void buildRoof();\r\n    void buildWindows();\r\n    void buildGarage();\r\n\r\n    House getHouse();\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-f9bbdf7 e-flex e-con-boxed e-con e-parent\" data-id=\"f9bbdf7\" 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-84dd807 elementor-widget elementor-widget-text-editor\" data-id=\"84dd807\" 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 klas\u0119-dyrektora:<\/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-9a72cb2 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"9a72cb2\" 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 house;\r\n\r\npublic class HouseDirector {\r\n    private HouseBuilder houseBuilder;\r\n\r\n    public HouseDirector(HouseBuilder houseBuilder) {\r\n        this.houseBuilder = houseBuilder;\r\n    }\r\n\r\n    public void buildHouse(){\r\n        houseBuilder.buildWalls();\r\n        houseBuilder.buildFloors();\r\n        houseBuilder.buildRooms();\r\n        houseBuilder.buildRoof();\r\n        houseBuilder.buildWindows();\r\n        houseBuilder.buildDoors();\r\n        houseBuilder.buildGarage();\r\n    }\r\n\r\n    public House getHouse(){\r\n        return this.houseBuilder.getHouse();\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-8828bca e-flex e-con-boxed e-con e-parent\" data-id=\"8828bca\" 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-aff5d27 elementor-widget elementor-widget-text-editor\" data-id=\"aff5d27\" 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 kla\u015be implementuj\u0105c\u0105 interfejs HouseBuilder. Ja utworz\u0119 dwie przyk\u0142adowe klasy.\u00a0<\/p><p>Pierwsza SmallHouseBuilder:<\/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-a5e75ff elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"a5e75ff\" 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 house;\r\n\r\npublic class SmallHouseBuilder implements HouseBuilder{\r\n    private House house;\r\n\r\n    public SmallHouseBuilder() {\r\n        this.house = new House();\r\n    }\r\n\r\n    @Override\r\n    public void buildDoors() {\r\n        this.house.setDoors(&quot;small doors&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildFloors() {\r\n        this.house.setFloors(&quot;small floors&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildWalls() {\r\n        this.house.setWalls(&quot;small walls&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildRooms() {\r\n        this.house.setRooms(&quot;small rooms&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildRoof() {\r\n        this.house.setRoof(&quot;small roof&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildWindows() {\r\n        this.house.setWindows(&quot;small windows&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildGarage() {\r\n        this.house.setGarage(&quot;small garage&quot;);\r\n    }\r\n\r\n    @Override\r\n    public House getHouse() {\r\n        return house;\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-aa561f4 e-flex e-con-boxed e-con e-parent\" data-id=\"aa561f4\" 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-beee55d elementor-widget elementor-widget-text-editor\" data-id=\"beee55d\" 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>Drugas klasa to BigHouseBuilder:<\/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-057a91c elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"057a91c\" 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 house;\r\n\r\npublic class BigHouseBuilder implements HouseBuilder{\r\n    private House house;\r\n\r\n    public BigHouseBuilder() {\r\n        this.house = new House();\r\n    }\r\n\r\n    @Override\r\n    public void buildDoors() {\r\n        this.house.setDoors(&quot;big doors&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildFloors() {\r\n        this.house.setFloors(&quot;big floors&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildWalls() {\r\n        this.house.setWalls(&quot;big walls&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildRooms() {\r\n        this.house.setRooms(&quot;big rooms&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildRoof() {\r\n        this.house.setRoof(&quot;big roof&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildWindows() {\r\n        this.house.setWindows(&quot;big windows&quot;);\r\n    }\r\n\r\n    @Override\r\n    public void buildGarage() {\r\n        this.house.setGarage(&quot;big garage&quot;);\r\n    }\r\n\r\n    @Override\r\n    public House getHouse() {\r\n        return house;\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-a88815c e-flex e-con-boxed e-con e-parent\" data-id=\"a88815c\" 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-b023022 elementor-widget elementor-widget-text-editor\" data-id=\"b023022\" 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, implkementujemy klas\u0119 g\u0142\u00f3wn\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-4e8b0a3 elementor-widget elementor-widget-wp-widget-custom_html\" data-id=\"4e8b0a3\" 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 house.BigHouseBuilder;\r\nimport house.House;\r\nimport house.HouseDirector;\r\nimport house.SmallHouseBuilder;\r\n\r\npublic class Demo {\r\n    public static void main(String args&#x5B;]){\r\n         SmallHouseBuilder smallHouseBuilder = new SmallHouseBuilder();\r\n         BigHouseBuilder bigHouseBuilder = new BigHouseBuilder();\r\n\r\n         HouseDirector smallHouseDirector = new HouseDirector(smallHouseBuilder);\r\n         smallHouseDirector.buildHouse();\r\n\r\n         HouseDirector bigHouseDirector = new HouseDirector(bigHouseBuilder);\r\n         bigHouseDirector.buildHouse();\r\n\r\n         House smallHouse = smallHouseDirector.getHouse();\r\n         House bigHouse = bigHouseDirector.getHouse();\r\n\r\n        System.out.println(smallHouse);\r\n        System.out.println(bigHouse);\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 Builder (Budowniczy) Wyobra\u017amy sobie, \u017ce chcemy stworzy\u0107 klas\u0119 reprezentuj\u0105c\u0105 dom. Dom mo\u017ce sk\u0142ada\u0107 si\u0119 z r\u00f3\u017cnych element\u00f3w, takich jak [&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-4117","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/pages\/4117","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=4117"}],"version-history":[{"count":23,"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/pages\/4117\/revisions"}],"predecessor-version":[{"id":4884,"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/pages\/4117\/revisions\/4884"}],"wp:attachment":[{"href":"https:\/\/natalia-kaczynska.profesjonalnyprogramista.pl\/en\/wp-json\/wp\/v2\/media?parent=4117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}