{"id":74,"date":"2023-03-10T09:35:35","date_gmt":"2023-03-10T08:35:35","guid":{"rendered":"http:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/?p=74"},"modified":"2023-03-17T20:21:31","modified_gmt":"2023-03-17T19:21:31","slug":"singleton","status":"publish","type":"post","link":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/?p=74","title":{"rendered":"Singleton (Design Pattern)"},"content":{"rendered":"\n<p>Wzorce Projektowe ang. Design Patterns, s\u0105 to uporz\u0105dkowane i sprawdzone w praktyce rozwi\u0105zania cz\u0119sto spotykanych problem\u00f3w programistycznych. Ich implementacja nie tylko rozwi\u0105zuje napotkany problem ale r\u00f3wnie\u017c u\u0142atwia komunikacj\u0119 w zespole oraz szybsze zrozumienie kodu przez innych programist\u00f3w.<\/p>\n\n\n\n<p>Wzorzec projektowy Singleton wykorzystywany jest w sytuacjach gdy chcemy utworzy\u0107 jeden obiekt z klasy. Implementacja Singletona powoduje, \u017ce nie mo\u017cna utworzy\u0107 z klasy wi\u0119cej ni\u017c jednego obiektu. Wszystkie kolejne instancje b\u0119d\u0105 odniesieniem do pierwszego. Wzorce projektowe takie jak Factory, Builder cz\u0119sto implementowane s\u0105 przy u\u017cyciu Singletona.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"603\" height=\"291\" src=\"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/03\/image-4.png\" alt=\"\" class=\"wp-image-106\" srcset=\"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/03\/image-4.png 603w, https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/03\/image-4-300x145.png 300w, https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/03\/image-4-228x110.png 228w\" sizes=\"auto, (max-width: 603px) 100vw, 603px\" \/><figcaption class=\"wp-element-caption\">Implementacja wzorca projektowego Singleton<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Singleton sk\u0142ada si\u0119 z trzech element\u00f3w. Pierwszy to prywatne, statyczne pole instance, zwracaj\u0105cy typ klasy w kt\u00f3rej jest implementowany. Drugim elementem jest prywatny konstruktor. Trzeci\u0105 cz\u0119\u015bci\u0105 jest metoda getInstance, kt\u00f3ra zwraca nam instance. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Utworzenie obiektu polega na wywo\u0142aniu metody getInstance. Ka\u017cde kolejne &#8222;utworzenie obiektu&#8221; jest odniesieniem do tego pierwszego. Za ka\u017cdym razem zwracamy ten sam obiekt. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wzorce Projektowe ang. Design Patterns, s\u0105 to uporz\u0105dkowane i sprawdzone w praktyce rozwi\u0105zania cz\u0119sto spotykanych problem\u00f3w programistycznych. Ich implementacja nie tylko rozwi\u0105zuje napotkany problem ale r\u00f3wnie\u017c u\u0142atwia komunikacj\u0119 w zespole oraz szybsze zrozumienie kodu przez innych programist\u00f3w. Wzorzec projektowy Singleton wykorzystywany jest w sytuacjach gdy chcemy utworzy\u0107 jeden obiekt z klasy. Implementacja Singletona powoduje, \u017ce &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/?p=74\" class=\"more-link\">Read more<span class=\"screen-reader-text\"> &#8222;Singleton (Design Pattern)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-74","post","type-post","status-publish","format-standard","hentry","category-bez-kategorii"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/74","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=74"}],"version-history":[{"count":4,"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/74\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/74\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/krystian-surowiec.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}