{"id":248,"date":"2023-10-02T22:35:15","date_gmt":"2023-10-02T20:35:15","guid":{"rendered":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/?page_id=248"},"modified":"2023-10-03T22:41:30","modified_gmt":"2023-10-03T20:41:30","slug":"fabryka","status":"publish","type":"page","link":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/blog\/fabryka\/","title":{"rendered":"Fabryka"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"248\" class=\"elementor elementor-248\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-275c8cb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"275c8cb\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b8e8a59\" data-id=\"b8e8a59\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-60e6adf elementor-widget elementor-widget-heading\" data-id=\"60e6adf\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.18.0 - 20-12-2023 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Fabryka Factory <\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2d05353 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2d05353\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5ce62f4\" data-id=\"5ce62f4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-27d524a elementor-position-right elementor-widget__width-initial elementor-vertical-align-top elementor-widget elementor-widget-image-box\" data-id=\"27d524a\" data-element_type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.18.0 - 20-12-2023 *\/\n.elementor-widget-image-box .elementor-image-box-content{width:100%}@media (min-width:768px){.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper,.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{display:flex}.elementor-widget-image-box.elementor-position-right .elementor-image-box-wrapper{text-align:right;flex-direction:row-reverse}.elementor-widget-image-box.elementor-position-left .elementor-image-box-wrapper{text-align:left;flex-direction:row}.elementor-widget-image-box.elementor-position-top .elementor-image-box-img{margin:auto}.elementor-widget-image-box.elementor-vertical-align-top .elementor-image-box-wrapper{align-items:flex-start}.elementor-widget-image-box.elementor-vertical-align-middle .elementor-image-box-wrapper{align-items:center}.elementor-widget-image-box.elementor-vertical-align-bottom .elementor-image-box-wrapper{align-items:flex-end}}@media (max-width:767px){.elementor-widget-image-box .elementor-image-box-img{margin-left:auto!important;margin-right:auto!important;margin-bottom:15px}}.elementor-widget-image-box .elementor-image-box-img{display:inline-block}.elementor-widget-image-box .elementor-image-box-title a{color:inherit}.elementor-widget-image-box .elementor-image-box-wrapper{text-align:center}.elementor-widget-image-box .elementor-image-box-description{margin:0}<\/style><div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factory-150x150.png\" class=\"attachment-thumbnail size-thumbnail wp-image-224\" alt=\"\" srcset=\"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factory-150x150.png 150w, https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factory-300x300.png 300w, https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factory.png 512w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/figure><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">Do czego s\u0142u\u017cy Fabryka?<\/h3><p class=\"elementor-image-box-description\">Jest to kreacyjny wzorzec projektowy. Wyr\u00f3\u017cniamy dwie odmiany tego wzorca: Metoda Fabrykuj\u0105ca oraz Fabryka Abstrakcyjna. Obydwie odmiany maj\u0105 ten sam cel: upro\u015bci\u0107 tworzenie nowych obiekt\u00f3w. Na pocz\u0105tku zamie\u015bci\u0142em przyk\u0142ad, kt\u00f3ry jeszcze nie u\u017cywa wzorca Fabryka, zobaczmy jakie problemy napotykamy. Uwa\u017cam, \u017ce dobrym przyk\u0142adem b\u0119dzie po prostu gra w statki. <\/p><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-04d7737 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"04d7737\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-53eb6b9\" data-id=\"53eb6b9\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4170182 elementor-position-left elementor-vertical-align-middle elementor-view-default elementor-mobile-position-top elementor-widget elementor-widget-icon-box\" data-id=\"4170182\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/plugins\/elementor\/assets\/css\/widget-icon-box.min.css\">\t\t<div class=\"elementor-icon-box-wrapper\">\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon elementor-animation-\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-ship\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t<span  >\n\t\t\t\t\t\tKodowanie gry w statki bez u\u017cywania Fabryki\t\t\t\t\t<\/span>\n\t\t\t\t<\/h3>\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tNa pocz\u0105tku tworzymy klas\u0119 Ship, kt\u00f3ra zawiera prywatne cechy, kt\u00f3re otrzyma ka\u017cdy obiekt po utworzeniu. W naszym przyk\u0142adzie cech\u0119 \u201erozmiar\u201d otrzyma ka\u017cdy statek. W klasie Ship tworzymy te\u017c konstruktor i getter.<br>\nNast\u0119pnie tworzymy klasy statk\u00f3w czteromasztowych ShipSizeFour, trzymasztowych ShipSizeThree, itd. One dziedzicz\u0105 po klasie Ship.\n<br>\nW klasie main tworzymy obiekty (statki).\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ca1b406 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ca1b406\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-329c6fb\" data-id=\"329c6fb\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-398916f elementor-tabs-alignment-stretch elementor-tabs-view-horizontal elementor-widget elementor-widget-tabs\" data-id=\"398916f\" data-element_type=\"widget\" data-widget_type=\"tabs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.18.0 - 20-12-2023 *\/\n.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{width:25%;flex-shrink:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-right-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{height:999em;width:0;right:0;border-right-style:solid}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{bottom:0;height:0;width:999em;border-bottom-style:solid}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:left}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{position:relative;padding:20px 25px;font-weight:700;line-height:1;border:solid transparent}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{display:block;content:\"\";position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{padding:10px;cursor:pointer}.elementor-widget-tabs .elementor-tab-content{padding:20px;display:none}@media (max-width:767px){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:768px){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{flex-grow:1;border-style:solid solid solid none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}}<\/style>\t\t<div class=\"elementor-tabs\">\n\t\t\t<div class=\"elementor-tabs-wrapper\" role=\"tablist\" >\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-6031\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"true\" data-tab=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"elementor-tab-content-6031\" aria-expanded=\"false\">main.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-6032\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-6032\" aria-expanded=\"false\">Ship.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-6033\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-6033\" aria-expanded=\"false\">ShipSizeFour.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-6034\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"4\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-6034\" aria-expanded=\"false\">ShipSizeThree.java<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"elementor-tabs-content-wrapper\" role=\"tablist\" aria-orientation=\"vertical\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"true\" data-tab=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"elementor-tab-content-6031\" aria-expanded=\"false\">main.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-6031\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-6031\" tabindex=\"0\" hidden=\"false\"><p class=\"MsoNormal\">public class Main {<br \/>\u00a0\u00a0\u00a0 public static void main(String[] args) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ship shipSizeFour = new Ship(4);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ship shipSizeThree = new Ship(3);<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-6032\" aria-expanded=\"false\">Ship.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-6032\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-6032\" tabindex=\"0\" hidden=\"hidden\"><p>public class Ship {<br \/>\u00a0\u00a0\u00a0 private int size;<br \/>\u00a0\u00a0\u00a0 public Ship(int size) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 this.size = size;<br \/><br \/>\u00a0\u00a0\u00a0 }<br \/>\u00a0\u00a0\u00a0 public int getSize() {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return size;<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-6033\" aria-expanded=\"false\">ShipSizeFour.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-6033\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-6033\" tabindex=\"0\" hidden=\"hidden\"><p>public class ShipSizeFour extends Ship {<br \/>\u00a0\u00a0\u00a0 public ShipSizeFour(int size) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 super(size);<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"4\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-6034\" aria-expanded=\"false\">ShipSizeThree.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-6034\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-6034\" tabindex=\"0\" hidden=\"hidden\"><p>public class ShipSizeThree extends Ship {<br \/>\u00a0\u00a0\u00a0 public ShipSizeThree(int size) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 super(size);<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-23f02b5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"23f02b5\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-10156bf\" data-id=\"10156bf\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0c4e6c7 elementor-position-right elementor-vertical-align-middle elementor-view-default elementor-mobile-position-top elementor-widget elementor-widget-icon-box\" data-id=\"0c4e6c7\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon elementor-animation-\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-traffic-light\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t<span  >\n\t\t\t\t\t\tMo\u017cliwe ryzyka i ich eliminowanie\t\t\t\t\t<\/span>\n\t\t\t\t<\/h3>\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tPodczas tworzenia nowych obiekt\u00f3w mo\u017ce w \u0142atwy spos\u00f3b doj\u015b\u0107 do pomy\u0142ek, dlatego te\u017c wymy\u015blono wzorzec Fabryka. Fabryka polega na oddelegowaniu tworzenia nowych obiekt\u00f3w do innych klas, tak by u\u017cytkownik musia\u0142 tylko zawo\u0142a\u0107 jedn\u0105 metod\u0119 i ju\u017c otrzyma\u0142 gotowy obiekt.\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-473257c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"473257c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-815dfe5\" data-id=\"815dfe5\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-87be132 elementor-widget elementor-widget-heading\" data-id=\"87be132\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Fabryka - schemat dzia\u0142ania<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5848cb3 elementor-widget__width-initial elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"5848cb3\" data-element_type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1164\" height=\"727\" src=\"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factorySchemat.png\" class=\"attachment-full size-full wp-image-258\" alt=\"\" srcset=\"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factorySchemat.png 1164w, https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factorySchemat-300x187.png 300w, https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factorySchemat-1024x640.png 1024w, https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/factorySchemat-768x480.png 768w\" sizes=\"(max-width: 1164px) 100vw, 1164px\" \/><\/figure><div class=\"elementor-image-box-content\"><p class=\"elementor-image-box-description\">W moim artykule zaprezentuj\u0119 odmian\u0119 Metoda Fabrykuj\u0105ca W tej odmianie mo\u017cna wyr\u00f3\u017cni\u0107 4 g\u0142\u00f3wne elementy:<\/p><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7817c3f elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"7817c3f\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/wp-content\/plugins\/elementor\/assets\/css\/widget-icon-list.min.css\">\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-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=\"far fa-paper-plane\"><\/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\">1. Fabryka abstrakcyjna, kt\u00f3ra rozszerza Fabryk\u0119 w\u0142a\u015bciw\u0105.<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-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=\"far fa-paper-plane\"><\/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\">2. Fabryka w\u0142a\u015bciwa, kt\u00f3ra tworzy okr\u0119ty.<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-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=\"far fa-paper-plane\"><\/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\">3. Okr\u0119ty: czteromasztowce, tr\u00f3jmasztowce, itd.<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-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=\"far fa-paper-plane\"><\/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\">4. Klasa abstrakcyjna okr\u0119t\u00f3w.<\/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<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c76390 elementor-widget elementor-widget-text-editor\" data-id=\"7c76390\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.18.0 - 20-12-2023 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<h6>Poni\u017cej mo\u017cna zapozna\u0107 si\u0119 z gotowym kodem, w kt\u00f3rym zaimplementowano wzorzec Fabryka.<\/h6>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f2ce320 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f2ce320\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ee826a2\" data-id=\"ee826a2\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d01ceb9 elementor-tabs-alignment-stretch elementor-tabs-view-horizontal elementor-widget elementor-widget-tabs\" data-id=\"d01ceb9\" data-element_type=\"widget\" data-widget_type=\"tabs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-tabs\">\n\t\t\t<div class=\"elementor-tabs-wrapper\" role=\"tablist\" >\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-2181\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"true\" data-tab=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"elementor-tab-content-2181\" aria-expanded=\"false\">main.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-2182\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2182\" aria-expanded=\"false\">Ship.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-2183\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2183\" aria-expanded=\"false\">ShipSizeFour.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-2184\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"4\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2184\" aria-expanded=\"false\">ShipSizeThree.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-2185\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"5\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2185\" aria-expanded=\"false\">ShipFactory.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-2186\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"6\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2186\" aria-expanded=\"false\">Factory.java<\/div>\n\t\t\t\t\t\t\t\t\t<div id=\"elementor-tab-title-2187\" class=\"elementor-tab-title elementor-tab-desktop-title\" aria-selected=\"false\" data-tab=\"7\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2187\" aria-expanded=\"false\">ShipType.java<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"elementor-tabs-content-wrapper\" role=\"tablist\" aria-orientation=\"vertical\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"true\" data-tab=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"elementor-tab-content-2181\" aria-expanded=\"false\">main.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2181\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-2181\" tabindex=\"0\" hidden=\"false\"><p>public class Main {<br \/>\u00a0\u00a0\u00a0 public static void main(String[] args) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Factory factory = new ShipFactory();<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ship shipSizeFour = factory.createShip(ShipType.<em>SHIP_SIZE_FOUR<\/em>);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ship shipSizeThree = factory.createShip(ShipType.<em>SHIP_SIZE_THREE<\/em>);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ship shipSizeTwo = factory.createShip(ShipType.<em>SHIP_SIZE_TWO<\/em>);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ship shipSizeOne = factory.createShip(ShipType.<em>SHIP_SIZE_ONE<\/em>);<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2182\" aria-expanded=\"false\">Ship.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2182\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-2182\" tabindex=\"0\" hidden=\"hidden\"><p>public class Ship {<br \/>\u00a0\u00a0\u00a0 private int size;<br \/>\u00a0\u00a0\u00a0 protected Ship(int size) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 this.size = size;<\/p><p>\u00a0\u00a0\u00a0 }<br \/>\u00a0\u00a0\u00a0 public int getSize() {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return size;<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2183\" aria-expanded=\"false\">ShipSizeFour.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2183\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-2183\" tabindex=\"0\" hidden=\"hidden\"><p>public class ShipSizeFour extends Ship {<br \/>\u00a0 \u00a0 ShipSizeFour(int size) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 super(size);<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"4\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2184\" aria-expanded=\"false\">ShipSizeThree.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2184\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-2184\" tabindex=\"0\" hidden=\"hidden\"><p>public class ShipSizeThree extends Ship {<br \/>\u00a0 \u00a0 ShipSizeThree(int size) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 super(size);<br \/>\u00a0\u00a0\u00a0 }<br \/>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"5\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2185\" aria-expanded=\"false\">ShipFactory.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2185\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"5\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-2185\" tabindex=\"0\" hidden=\"hidden\"><p>public class ShipFactory extends Factory{<br \/>\u00a0\u00a0\u00a0 @Override<br \/>\u00a0\u00a0\u00a0 public Ship createShip(ShipType type) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 switch(type) {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 case <em>SHIP_SIZE_FOUR <\/em>-&gt; {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return new ShipSizeFour(4);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 case <em>SHIP_SIZE_THREE <\/em>-&gt; {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return new ShipSizeThree(3);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 case <em>SHIP_SIZE_TWO <\/em>-&gt; {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return new ShipSizeTwo(2);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 case <em>SHIP_SIZE_ONE <\/em>-&gt; {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return new ShipSizeOne(1);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0default -&gt; {<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 throw new UnsupportedOperationException(&#8222;No such type&#8221;);<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/p><p>}<\/p><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"6\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2186\" aria-expanded=\"false\">Factory.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2186\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"6\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-2186\" tabindex=\"0\" hidden=\"hidden\"><div>abstract public class Factory {<br \/>abstract public Ship createShip(ShipType type);<br \/>}<\/div><\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-tab-title elementor-tab-mobile-title\" aria-selected=\"false\" data-tab=\"7\" role=\"tab\" tabindex=\"-1\" aria-controls=\"elementor-tab-content-2187\" aria-expanded=\"false\">ShipType.java<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2187\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"7\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-2187\" tabindex=\"0\" hidden=\"hidden\"><p>public enum ShipType {<br \/>\u00a0\u00a0\u00a0 <em>SHIP_SIZE_FOUR<\/em>, <em>SHIP_SIZE_THREE<\/em>, <em>SHIP_SIZE_TWO<\/em>, <em>SHIP_SIZE_ONE<br \/><\/em>}<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-efd32f7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"efd32f7\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-567d189\" data-id=\"567d189\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2d26592 elementor-position-right elementor-vertical-align-middle elementor-view-default elementor-mobile-position-top elementor-widget elementor-widget-icon-box\" data-id=\"2d26592\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon elementor-animation-\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-lightbulb\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t<span  >\n\t\t\t\t\t\tPodsumowanie\t\t\t\t\t<\/span>\n\t\t\t\t<\/h3>\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tUtworzyli\u015bmy nowe statki za pomoc\u0105 fabryki. Trzeba te\u017c pami\u0119ta\u0107, aby konstruktor klasy Ship nie by\u0142 dost\u0119pny w klasie main, dlatego warto nada\u0107 mu operator dost\u0119pu protected i wszystkie klasy dotycz\u0105ce tworzenia statk\u00f3w przenie\u015b\u0107 do osobnego folderu.\n<br><br>\nPodsumowuj\u0105c, wzorzec fabryka jest bardzo pomocny do tworzenia obiekt\u00f3w. U\u017cytkownik, kt\u00f3ry tworzy obiekty, nie musi wiedzie\u0107 jak one si\u0119 tworz\u0105, jakie maj\u0105 parametry. Obiekty, kt\u00f3re tworzymy stosuj\u0105c fabryk\u0119 s\u0105 ze sob\u0105 kompatybilne. \t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Fabryka Factory Do czego s\u0142u\u017cy Fabryka? Jest to kreacyjny wzorzec projektowy. Wyr\u00f3\u017cniamy dwie odmiany tego wzorca: Metoda Fabrykuj\u0105ca oraz Fabryka Abstrakcyjna. Obydwie odmiany maj\u0105 ten sam cel: upro\u015bci\u0107 tworzenie nowych obiekt\u00f3w. Na pocz\u0105tku zamie\u015bci\u0142em przyk\u0142ad, kt\u00f3ry jeszcze nie u\u017cywa wzorca Fabryka, zobaczmy jakie problemy napotykamy. Uwa\u017cam, \u017ce dobrym przyk\u0142adem b\u0119dzie po prostu gra w statki. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":154,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-248","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/pages\/248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/comments?post=248"}],"version-history":[{"count":20,"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/pages\/248\/revisions"}],"predecessor-version":[{"id":321,"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/pages\/248\/revisions\/321"}],"up":[{"embeddable":true,"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/pages\/154"}],"wp:attachment":[{"href":"https:\/\/pawel-majchrzak.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/media?parent=248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}