{"id":2308,"date":"2026-05-29T21:47:53","date_gmt":"2026-05-29T21:47:53","guid":{"rendered":"https:\/\/vkrastev1blog.com\/?p=2308"},"modified":"2026-05-29T21:48:41","modified_gmt":"2026-05-29T21:48:41","slug":"questions-and-informations-prepairing-for-java-developer-job-interview","status":"publish","type":"post","link":"https:\/\/vkrastev1blog.com\/2026\/05\/29\/questions-and-informations-prepairing-for-java-developer-job-interview\/","title":{"rendered":"Pytania i informacje przygotowuj\u0105ce do rozmowy kwalifikacyjnej na programist\u0119 Java"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Czym s\u0105 zasady SOLID?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Czym jest zasada pojedynczej odpowiedzialno\u015bci (SRP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klasa powinna mie\u0107 tylko jedn\u0105 odpowiedzialno\u015b\u0107.<br>Powinien mie\u0107 tylko jeden pow\u00f3d do zmiany.<br>Korzy\u015bci obejmuj\u0105 \u0142atwiejsze testowanie, mniejsze sprz\u0119\u017cenie i lepsz\u0105 organizacj\u0119.<br>Przyk\u0142ad:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna Ksi\u0105\u017cka {<br>prywatna nazwa ci\u0105gu;<br>prywatny autor ci\u0105gu;<br>prywatny tekst ci\u0105gu;<br>\/\/ konstruktory, gettery i settery<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest zasada otwartego-zamkni\u0119tego (OCP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jednostki oprogramowania (klasy, modu\u0142y, funkcje) powinny by\u0107 otwarte na rozbudow\u0119, ale zamkni\u0119te na modyfikacj\u0119.<br>Osi\u0105gnij to, u\u017cywaj\u0105c interfejs\u00f3w, klas abstrakcyjnych i dziedziczenia.<br>Przyk\u0142ad:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">interfejs Kszta\u0142t {<br>podw\u00f3jny obszar();<br>}<br>klasa Circle implementuje implementacj\u0119 Shape { \/* <em>\/ } klasa Prostok\u0105t implementuje Kszta\u0142t { \/<\/em> wdro\u017cenie *\/ }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest zasada podstawienia Liskowa (LSP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podtypy musz\u0105 by\u0107 substytucyjne dla swoich typ\u00f3w podstawowych, bez zmiany poprawno\u015bci programu.<br>Pod\u0105\u017ca za relacj\u0105 \u201ejest-a\u201d.<br>Przyk\u0142ad:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Bird { \/* typowe zachowanie ptak\u00f3w <em>\/ } klasa Wr\u00f3bel rozszerza Ptak { \/<\/em> specyficzne zachowanie wr\u00f3bla *\/ }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest zasada segregacji interfejsu (ISP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klienci nie powinni by\u0107 zmuszani do polegania na interfejsach, z kt\u00f3rych nie korzystaj\u0105.<br>Podziel du\u017ce interfejsy na mniejsze, bardziej szczeg\u00f3\u0142owe.<br>Przyk\u0142ad:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">interfejs Pracownik {<br>uniewa\u017cnij prac\u0119();<br>}<br>interfejs Zjadacz {<br>puste jedzenie();<br>}<br>klasa Robot implementuje Robotnika { \/* implementacja *\/ }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest zasada inwersji zale\u017cno\u015bci (DIP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modu\u0142y wysokiego poziomu nie powinny zale\u017ce\u0107 od modu\u0142\u00f3w niskiego poziomu; oba powinny zale\u017ce\u0107 od abstrakcji.<br>Abstrakcje nie powinny zale\u017ce\u0107 od szczeg\u00f3\u0142\u00f3w; szczeg\u00f3\u0142y powinny zale\u017ce\u0107 od abstrakcji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Abstrakcja<br>interfejs MessageSender {<br>void sendMessage(String wiadomo\u015bci);<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Modu\u0142 wysokiego poziomu<br>klasa Us\u0142uga powiadamiania {<br>prywatna wiadomo\u015b\u0107 nadawcy wiadomo\u015b\u0107 nadawcy;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public NotificationService(MessageSender messageSender) {<\/div><div class=\"cm-line\">    this.messageSender = messageSender;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void send(String message) {<\/div><div class=\"cm-line\">    messageSender.sendMessage(message);<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Modu\u0142 niskiego poziomu<br>klasa EmailSender implementuje MessageSender {<br>@Prze\u015bciga\u0107<br>public void sendMessage(String wiadomo\u015bci) {<br>System.out.println(&#8220;Wysy\u0142anie e-maila: &#8221; + wiadomo\u015b\u0107);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Kolejny modu\u0142 niskiego poziomu<br>klasa SmsSender implementuje MessageSender {<br>@Prze\u015bciga\u0107<br>public void sendMessage(String wiadomo\u015bci) {<br>System.out.println(&#8220;Wysy\u0142anie SMS: &#8221; + wiadomo\u015b\u0107);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Klasa g\u0142\u00f3wna<br>klasa publiczna G\u0142\u00f3wna {<br>public static void main(String[] args) {<br>\/\/ U\u017cyj EmailSender<br>MessageSender emailSender = nowy EmailSender();<br>NotificationService notificationService1 = nowa NotificationService(emailSender);<br>powiadomienieService1.send(&#8220;Witam przez e-mail!&#8221;);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/\/ Use SmsSender\n    MessageSender smsSender = new SmsSender();\n    NotificationService notificationService2 = new NotificationService(smsSender);\n    notificationService2.send(&#034;Hello via SMS!&#034;);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Interfejs MessageSender s\u0142u\u017cy jako abstrakcja.<br>Modu\u0142 wysokiego poziomu NotificationService opiera si\u0119 na tej abstrakcji, a nie na konkretnych implementacjach.<br>Modu\u0142y niskiego poziomu, takie jak EmailSender i SmsSender, r\u00f3wnie\u017c opieraj\u0105 si\u0119 na abstrakcji poprzez implementacj\u0119 interfejsu MessageSender.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest normalizacja SQL<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest normalizacja?<br>Normalizacja polega na strukturyzacji danych w relacyjnej bazie danych w celu wyeliminowania anomalii, takich jak nadmiarowo\u015b\u0107.<br>Dzieli du\u017ce, z\u0142o\u017cone tabele na mniejsze, zachowuj\u0105c relacje mi\u0119dzy danymi.<br>Dlaczego normalizacja jest wa\u017cna?<br>Zmniejsza redundancj\u0119: dziel\u0105c dane na mniejsze tabele, unikamy wielokrotnego przechowywania tych samych informacji.<br>Poprawia wydajno\u015b\u0107 zapyta\u0144: Mniejsze znormalizowane tabele prowadz\u0105 do szybszego wykonywania zapyta\u0144.<br>Minimalizuje anomalie aktualizacji: Aktualizacje mo\u017cna wprowadza\u0107 bez wp\u0142ywu na inne rekordy.<br>Zwi\u0119ksza integralno\u015b\u0107 danych: zapewnia sp\u00f3jne i dok\u0142adne dane.<br>Scenariusze normalizacji:<br>Integralno\u015b\u0107 danych: zapobiegaj niesp\u00f3jno\u015bciom podczas aktualizacji danych (np. zmianom wieku klient\u00f3w).<br>Efektywne wykonywanie zapyta\u0144: Upro\u015b\u0107 z\u0142o\u017cone zapytania, dziel\u0105c dane.<br>Optymalizacja pami\u0119ci masowej: wyeliminuj niepotrzebn\u0105 nadmiarowo\u015b\u0107, aby zaoszcz\u0119dzi\u0107 miejsce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest monolit mikrous\u0142ug?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest monolit?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aplikacja monolityczna jest zbudowana jako pojedyncza, ujednolicona jednostka. \u015aci\u015ble \u0142\u0105czy wszystkie komponenty (takie jak interfejs u\u017cytkownika po stronie klienta, baza danych i aplikacja po stronie serwera) w jedn\u0105 baz\u0119 kodu.<br>Zalety:<br>\u0141atwe wdro\u017cenie: Poniewa\u017c jest to pojedynczy plik wykonywalny lub katalog, wdro\u017cenie jest proste.<br>Szybko\u015b\u0107 rozwoju: Na pocz\u0105tku \u017cycia projektu monolity umo\u017cliwiaj\u0105 szybki rozw\u00f3j ze wzgl\u0119du na swoj\u0105 prostot\u0119.<br>Wydajno\u015b\u0107: Scentralizowany kod mo\u017ce obs\u0142ugiwa\u0107 r\u00f3\u017cne funkcje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Czym s\u0105 mikrous\u0142ugi?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mikrous\u0142ugi dziel\u0105 aplikacj\u0119 na mniejsze, niezale\u017cnie wdra\u017calne us\u0142ugi. Ka\u017cda us\u0142uga koncentruje si\u0119 na konkretnej domenie biznesowej.<br>Zalety:<br>Skalowalno\u015b\u0107: Mikrous\u0142ugi umo\u017cliwiaj\u0105 niezale\u017cne skalowanie poszczeg\u00f3lnych komponent\u00f3w.<br>Elastyczno\u015b\u0107: programi\u015bci mog\u0105 wybra\u0107 r\u00f3\u017cne technologie dla ka\u017cdej us\u0142ugi.<br>Izolacja: Awarie w jednej us\u0142udze nie maj\u0105 wp\u0142ywu na inne.<br>Wyzwania:<br>Z\u0142o\u017cono\u015b\u0107: zarz\u0105dzanie wieloma us\u0142ugami wymaga solidnej orkiestracji.<br>Narzut sieciowy: Komunikacja mi\u0119dzy us\u0142ugami powoduje op\u00f3\u017anienia.<br>Z\u0142o\u017cono\u015b\u0107 wdro\u017cenia: koordynowanie aktualizacji mi\u0119dzy us\u0142ugami mo\u017ce by\u0107 trudne.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest polimorfizm?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zast\u0119powanie metody:<br>Gdy podklasa zapewnia specyficzn\u0105 implementacj\u0119 metody, kt\u00f3ra jest ju\u017c zdefiniowana w jej nadklasie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przeci\u0105\u017canie metody:<br>Gdy klasa ma wiele metod o tej samej nazwie, ale r\u00f3\u017cnych parametrach (r\u00f3\u017cna liczba lub typy argument\u00f3w).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Z czego korzystaj\u0105 prywatni konstruktorzy?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Konstruktory prywatne s\u0105 u\u017cywane w klasach u\u017cytkowych lub klasach sta\u0142ych.<br>Klasy te zawieraj\u0105 tylko metody statyczne lub elementy cz\u0142onkowskie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Unikanie podklas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Delegacja Konstruktora:<br>Prywatne konstruktory umo\u017cliwiaj\u0105 delegowanie konstruktor\u00f3w, podczas gdy okre\u015blone konstruktory wywo\u0142uj\u0105 wsp\u00f3lnego prywatnego konstruktora.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Wzorzec Singletona<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O JVM<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Kompilacja:<br>Kiedy kompilujesz plik .java, kompilator Java generuje pliki .class zawieraj\u0105ce kod bajtowy (reprezentacja po\u015brednia).<br>Kod bajtowy jest niezale\u017cny od platformy i mo\u017ce dzia\u0142a\u0107 w dowolnym systemie z kompatybiln\u0105 maszyn\u0105 JVM.<br>&#8211;Podsystem modu\u0142u \u0142aduj\u0105cego klasy:<br>Odpowiedzialny za \u0142adowanie klas do pami\u0119ci.<br>Odczytuje pliki .class, generuje dane binarne i przechowuje je w obszarze metod.<br>Tworzy obiekt Class reprezentuj\u0105cy za\u0142adowan\u0105 klas\u0119 w pami\u0119ci sterty.<br>Przyk\u0142ad: Student s1 = nowy Student(); Klasa c1 = s1.getClass();<br>&#8211;\u0141\u0105czenie:<br>Sk\u0142ada si\u0119 z trzech krok\u00f3w:<br>Weryfikacja: Zapewnia poprawno\u015b\u0107 pliku .class.<br>Przygotowanie: Przydziela pami\u0119\u0107 dla zmiennych klasowych i inicjuje je.<br>Rozwi\u0105zanie (opcjonalnie): rozwi\u0105zuje odwo\u0142ania symboliczne do innych klas lub metod.<br>&#8211;Inicjalizacja:<br>Wykonuje inicjatory statyczne (np. bloki statyczne) i inicjuje zmienne statyczne.<br>Zmienne instancji s\u0105 inicjowane podczas tworzenia obiektu.<br>&#8211;Silnik wykonawczy:<br>Konwertuje kod bajtowy na kod maszynowy.<br>Zawiera kompilacj\u0119 Just-In-Time (JIT) w celu optymalizacji wydajno\u015bci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Podsumowuj\u0105c, maszyna JVM umo\u017cliwia uruchamianie program\u00f3w Java w dowolnym miejscu poprzez interpretacj\u0119 kodu bajtowego i zarz\u0105dzanie pami\u0119ci\u0105<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest metoda abstrakcyjna Privat?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Przypadki u\u017cycia metod prywatnych w klasach abstrakcyjnych:<br>Chocia\u017c metody abstrakcyjne nie mog\u0105 by\u0107 prywatne, metod prywatnych w klasie abstrakcyjnej mo\u017cna u\u017cywa\u0107 do r\u00f3\u017cnych cel\u00f3w:<br>&#8211;Metody pomocnicze: Implementuj wsp\u00f3ln\u0105 funkcjonalno\u015b\u0107 wsp\u00f3\u0142dzielon\u0105 przez inne metody.<br>&#8211;Encapsulation: Ukryj szczeg\u00f3\u0142y implementacji przed podklasami.<br>&#8211;Klasy strukturalne: Tw\u00f3rz ma\u0142e klasy z prywatnymi metodami, kt\u00f3re s\u0142u\u017c\u0105 jako kontenery danych<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest zbieracz \u015bmieci?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Pami\u0119\u0107 sterty:<br>Obiekty Java tworzone s\u0105 na stercie, czyli w wydzielonym obszarze pami\u0119ci.<br>Niekt\u00f3re obiekty staj\u0105 si\u0119 nieosi\u0105galne (program nie odwo\u0142uje si\u0119 ju\u017c do nich).<br>&#8211;Odbieracz \u015bmieci (GC):<br>GC identyfikuje i usuwa nieu\u017cywane obiekty, aby zwolni\u0107 pami\u0119\u0107.<br>Dzia\u0142a automatycznie w tle.<br>Dwa typy:<br>Drobne GC: Usuwa nieosi\u0105galne obiekty w m\u0142odym pokoleniu.<br>Major GC (Full GC): Usuwa obiekty starej generacji.<br>&#8211;Korzy\u015bci:<br>Programi\u015bci nie musz\u0105 jawnie usuwa\u0107 obiekt\u00f3w.<br>GC zapewnia dost\u0119pno\u015b\u0107 pami\u0119ci i zapobiega b\u0142\u0119dom OutOfMemory<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest OOP?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cztery zasady OOP:<br>&#8211;Enkapsulacja: \u0142\u0105czenie danych (atrybut\u00f3w) i metod (funkcji) w ramach klasy w celu ukrycia szczeg\u00f3\u0142\u00f3w implementacji i zapewnienia przejrzystego interfejsu.<br>&#8211;Dziedziczenie: Tworzenie nowych klas w oparciu o istniej\u0105ce, dziedziczenie ich atrybut\u00f3w i zachowa\u0144. Promuje ponowne wykorzystanie kodu.<br>&#8211;Polimorfizm: Umo\u017cliwienie jednolitego traktowania obiekt\u00f3w r\u00f3\u017cnych klas poprzez wsp\u00f3lny interfejs. Zapewnia elastyczno\u015b\u0107 i rozszerzalno\u015b\u0107.<br>&#8211;Abstrakcja: Skoncentrowanie si\u0119 na istotnych funkcjach przy jednoczesnym ukrywaniu niepotrzebnych zawi\u0142o\u015bci. Abstrakcja upraszcza projekt i czyni go \u0142atwiejszym w zarz\u0105dzaniu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Czym jest ACID W\u0142a\u015bciwo\u015bci odgrywaj\u0105 kluczow\u0105 rol\u0119 w zapewnieniu wiarygodno\u015bci i sp\u00f3jno\u015bci transakcji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Atomowo\u015b\u0107:<br>Transakcje s\u0105 realizowane w ca\u0142o\u015bci lub w og\u00f3le.<br>Brak cz\u0119\u015bciowego wykonania: je\u015bli transakcja nie powiedzie si\u0119 w po\u0142owie, wszelkie zmiany wprowadzone w bazie danych zostan\u0105 wycofane.<br>Przyk\u0142ad: rozwa\u017c przeniesienie 100 dolar\u00f3w z konta X na konto Y. Je\u015bli transakcja nie powiedzie si\u0119 po odliczeniu od X, ale przed dodaniem do Y, baza danych pozostanie sp\u00f3jna.<br>&#8211;Konsystencja:<br>Baza danych musi utrzymywa\u0107 ograniczenia integralno\u015bci przed i po transakcji.<br>Przyk\u0142ad: Je\u015bli \u0142\u0105czna kwota przed transakcj\u0105 wynosi 700 USD (X: 500 USD, Y: 200 USD), powinna pozosta\u0107 taka sama po transakcji (X: 400 USD, Y: 300 USD).<br>&#8211;Izolacja:<br>Wiele transakcji mo\u017ce odbywa\u0107 si\u0119 jednocze\u015bnie, nie wp\u0142ywaj\u0105c na siebie nawzajem.<br>Zmiany dokonane w jednej transakcji nie s\u0105 widoczne dla innych, dop\u00f3ki nie zostan\u0105 zatwierdzone.<br>Zapewnia r\u00f3wnowa\u017cne wyniki, jakby transakcje by\u0142y realizowane seryjnie.<br>Przyk\u0142ad: Izolowanie transakcji zapobiega niesp\u00f3jno\u015bciom wynikaj\u0105cym z przeplataj\u0105cych si\u0119 operacji.<br>&#8211;Trwa\u0142o\u015b\u0107:<br>Po zatwierdzeniu transakcji jej zmiany s\u0105 trwa\u0142e.<br>Wytrzymuje awarie i awarie systemu.<br>Zapewnia trwa\u0142o\u015b\u0107 danych.<br>Przyk\u0142ad: Nawet po ponownym uruchomieniu systemu zatwierdzone zmiany pozostaj\u0105 nienaruszone.<br>Pami\u0119taj, \u017ce w\u0142a\u015bciwo\u015bci ACID stanowi\u0105 podstaw\u0119 niezawodnych i sp\u00f3jnych operacji na bazach danych! \ud83c\udf1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest wzorzec strategii?<br>Opis: definiuje rodzin\u0119 algorytm\u00f3w, hermetyzuje ka\u017cdy z nich i sprawia, \u017ce \u200b\u200bs\u0105 wymienne. Pozwala to na zmian\u0119 algorytmu niezale\u017cnie od klient\u00f3w, kt\u00f3rzy go u\u017cywaj\u0105.<br>Przyk\u0142ad:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Interfejs do zachowa\u0144 zwi\u0105zanych z jedzeniem<br>interfejs EatBehaviour {<br>puste jedzenie();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Konkretne implementacje zachowa\u0144 \u017cywieniowych<br>klasa NormalDiet implementuje EatBehavior {<br>@Prze\u015bciga\u0107<br>publiczna pustka jedz() {<br>\/\/ Normalne jedzenie<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa LosingWeightDiet implementuje EatBehavior {<br>@Prze\u015bciga\u0107<br>publiczna pustka jedz() {<br>\/\/ Zdrowa \u017cywno\u015b\u0107<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Klasa kota z zachowaniem zwi\u0105zanym z jedzeniem<br>klasa abstrakcyjna Kot {<br>JedzZachowanie JedzZachowanie;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public void eat() {<\/div><div class=\"cm-line\">    eatBehavior.eat();<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void setEatBehavior(EatBehavior eatBehavior) {<\/div><div class=\"cm-line\"> this.eatBehavior = eatBehavior;<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ U\u017cycie<br>Kot kot = nowy Kot();<br>cat.setEatBehavior(nowa dieta odchudzaj\u0105ca());<br>kot.jedz(); \/\/ Kot od\u017cywia si\u0119 zdrowiej<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wzorce tw\u00f3rcze:<br>Wzorce te skupiaj\u0105 si\u0119 na tworzeniu instancji klas.<br>Przyk\u0142ady w zestawie<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Metoda fabryczna,<br>Opis problemu: Za\u0142\u00f3\u017cmy, \u017ce chcemy stworzy\u0107 r\u00f3\u017cne rodzaje produkt\u00f3w (np. samochody, rowery, rowery) bez \u015bcis\u0142ego wi\u0105zania naszego kodu z konkretnymi implementacjami.<br>Kluczowe komponenty:<br>Produkt: Klasa abstrakcyjna lub interfejs definiuj\u0105cy typowe operacje dla obiekt\u00f3w, kt\u00f3re utworzy fabryka.<br>Produkty betonowe: Rzeczywiste klasy implementuj\u0105ce interfejs produktu, reprezentuj\u0105ce okre\u015blone typy obiekt\u00f3w.<br>Tw\u00f3rca: Klasa abstrakcyjna lub interfejs deklaruj\u0105cy metod\u0119 fabryczn\u0105. Odpowiada za tworzenie obiekt\u00f3w Product, ale faktyczne tworzenie deleguje do podklas.<br>Tw\u00f3rcy betonu: podklasy Tw\u00f3rcy, kt\u00f3re implementuj\u0105 metod\u0119 fabryczn\u0105. Decyduj\u0105, kt\u00f3ry konkretny produkt betonowy utworzy\u0107 w oparciu o parametry wej\u015bciowe lub konfiguracj\u0119.<br>Metoda fabryczna: Metoda zdefiniowana w klasie Creator, kt\u00f3ra tworzy obiekty Product. Zwykle jest deklarowany jako abstrakcyjny w Kreatorze i implementowany w Konkretnych Kreatorach.<br>Przyk\u0142ad w Javie: Za\u0142\u00f3\u017cmy, \u017ce mamy fabryk\u0119 produkuj\u0105c\u0105 r\u00f3\u017cne typy pojazd\u00f3w. Oto uproszczony przyk\u0142ad:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ StreszczenieProdukt<br>interfejs Produkt {<br>puste wy\u015bwietlanie();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Produkty betonowe<br>klasa Samoch\u00f3d implementuje Produkt {<br>publiczne wy\u015bwietlanie pustego() {<br>System.out.println(&#8220;Utworzono samoch\u00f3d&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa Rower implementuje Produkt {<br>publiczne wy\u015bwietlanie pustego() {<br>System.out.println(&#8220;Utworzono rower&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Tw\u00f3rca (Fabryka)<br>interfejs Fabryka {<br>Metoda fabryki produktu();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Tw\u00f3rcy betonu<br>klasa ConcreteFactoryA implementuje fabryk\u0119 {<br>publiczna metoda fabryki produktu() {<br>zwr\u00f3\u0107 nowy samoch\u00f3d();<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa ConcreteFactoryB implementuje fabryk\u0119 {<br>publiczna metoda fabryki produktu() {<br>zwr\u00f3\u0107 nowy Rower();<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna FactoryMethodExample {<br>public static void main(String[] args) {<br>Fabryka fabrykaA = nowa ConcreteFactoryA();<br>Produkt produktA = fabrykaA.factoryMethod();<br>produktA.display();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    Factory factoryB = new ConcreteFactoryB();\n    Product productB = factoryB.factoryMethod();\n    productB.display();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Budowniczy<br>Wzorzec Konstruktora to kreatywny wzorzec projektowy, kt\u00f3ry pozwala krok po kroku konstruowa\u0107 z\u0142o\u017cone obiekty,<br>oddzielaj\u0105c ich konstrukcj\u0119 od reprezentacji. Oto prosty przyk\u0142ad w Javie:<br>\/\/ Zdefiniuj klas\u0119, kt\u00f3r\u0105 chcesz zbudowa\u0107<br>wpis klasowy {<br>prywatny ko\u0144cowy tytu\u0142 ci\u0105gu;<br>prywatny ko\u0144cowy tekst ci\u0105gu;<br>prywatna ko\u0144cowa kategoria String;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">Post(Builder builder) {<\/div><div class=\"cm-line\">    this.title = builder.title;<\/div><div class=\"cm-line\">    this.text = builder.text;<\/div><div class=\"cm-line\">    this.category = builder.category;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">\/\/ Getters for properties<\/div><div class=\"cm-line\">public String getTitle() {<\/div><div class=\"cm-line\">    return title;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public String getText() {<\/div><div class=\"cm-line\">    return text;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public String getCategory() {<\/div><div class=\"cm-line\">    return category;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">\/\/ Builder class<\/div><div class=\"cm-line\">public static class Builder {<\/div><div class=\"cm-line\">    private String title;<\/div><div class=\"cm-line\">    private String text;<\/div><div class=\"cm-line\">    private String category;<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Builder title(String title) {<\/div><div class=\"cm-line\">        this.title = title;<\/div><div class=\"cm-line\">        return this;<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Builder text(String text) {<\/div><div class=\"cm-line\">        this.text = text;<\/div><div class=\"cm-line\">        return this;<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Builder category(String category) {<\/div><div class=\"cm-line\">        this.category = category;<\/div><div class=\"cm-line\">        return this;<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Post build() {<\/div><div class=\"cm-line\">        return new Post(this);<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ U\u017cycie<br>klasa publiczna G\u0142\u00f3wna {<br>public static void main(String[] args) {<br>Opublikuj post = nowy Post.Builder()<br>.title(&#8220;Wzorzec konstruktora Java&#8221;)<br>.text(&#8220;Wyja\u015bnienie, jak zaimplementowa\u0107 wzorzec Buildera w Javie&#8221;)<br>.category(&#8220;Wzorce projektowe&#8221;)<br>.zbudowa\u0107();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    System.out.println(&#034;Title: &#034; + post.getTitle());\n    System.out.println(&#034;Text: &#034; + post.getText());\n    System.out.println(&#034;Category: &#034; + post.getCategory());\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Prototyp<br>Wzorzec prototypowy to kreatywny wzorzec projektowy, kt\u00f3ry umo\u017cliwia tworzenie nowych obiekt\u00f3w poprzez kopiowanie istniej\u0105cego obiektu.<br>Zamiast tworzy\u0107 nowe instancje od zera, klonujesz istniej\u0105cy prototyp, co mo\u017ce by\u0107 bardziej wydajne i elastyczne. Zanurzmy si\u0119 w przyk\u0142adzie w Javie:<br>Zdefiniuj prototypowy interfejs: Najpierw tworzymy abstrakcyjn\u0105 klas\u0119 lub interfejs o nazwie Tree z abstrakcyjn\u0105 metod\u0105 copy():<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiczna klasa abstrakcyjna Drzewo {<br>publiczne streszczenie Kopia drzewa();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Konkretne prototypy: Nast\u0119pnie implementujemy dwie konkretne klasy rozszerzaj\u0105ce Tree: PlasticTree i PineTree. Klasy te reprezentuj\u0105 okre\u015blone typy drzew i zapewniaj\u0105 w\u0142asn\u0105 implementacj\u0119 metody copy():<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna PlasticTree rozszerza drzewo {<br>@Prze\u015bciga\u0107<br>publiczna kopia drzewa() {<br>PlasticTree PlasticTreeClone = nowe PlasticTree(this.getMass(), this.getHeight());<br>PlasticTreeClone.setPosition(this.getPosition());<br>zwr\u00f3\u0107 plastikTreeClone;<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna PineTree rozszerza drzewo {<br>@Prze\u015bciga\u0107<br>publiczna kopia drzewa() {<br>PineTree pineTreeClone = nowe PineTree(this.getMass(), this.getHeight());<br>pineTreeClone.setPosition(this.getPosition());<br>zwr\u00f3\u0107 pineTreeClone;<br>}<br>}<br>Na tych zaj\u0119ciach dostosowujemy proces klonowania w oparciu o konkretny typ drzewa. Na przyk\u0142ad kopiujemy mas\u0119, wysoko\u015b\u0107 i po\u0142o\u017cenie oryginalnego drzewa.<br>Spos\u00f3b u\u017cycia: Teraz stw\u00f3rzmy instancje naszych konkretnych prototyp\u00f3w:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna G\u0142\u00f3wna {<br>public static void main(String[] args) {<br>Oryginalne drzewoPlasticTree = nowe PlasticTree(10, 5);<br>Sklonowane drzewoPlasticTree = oryginalnePlasticTree.copy();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    Tree originalPineTree = new PineTree(15, 8);\n    Tree clonedPineTree = originalPineTree.copy();\n\n    \/\/ Use the cloned trees as needed\n    \/\/ ...\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Czym s\u0105 wzorce strukturalne?<br>Wzorce te dotycz\u0105 struktury i sk\u0142adu klasy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Wz\u00f3r adaptera<br>Wzorzec adaptera to strukturalny wzorzec projektowy, kt\u00f3ry umo\u017cliwia wsp\u00f3\u0142prac\u0119 dw\u00f3ch niekompatybilnych interfejs\u00f3w.<br>Dzia\u0142a jako pomost pomi\u0119dzy tymi interfejsami, umo\u017cliwiaj\u0105c wsp\u00f3\u0142prac\u0119 bez modyfikowania ich kodu \u017ar\u00f3d\u0142owego.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adapter obiektowy:<br>W tym podej\u015bciu u\u017cywamy kompozycji do delegowania logiki do adaptera.<br>Adapter zawiera modu\u0142 Adaptee i deleguje metod\u0119 request() do metodyspecificRequest() w obiekcie Adaptee.<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Adaptee (istniej\u0105ca klasa)<br>klasa Adaptee {<br>void okre\u015bloneRequest() {<br>System.out.println(&#8220;Specjalne \u017c\u0105danie adaptatora&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Interfejs docelowy<br>interfejs Cel {<br>niewa\u017cne \u017c\u0105danie();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Adapter (u\u017cywaj\u0105c kompozycji)<br>adapter klasy implementuje Cel {<br>prywatny ko\u0144cowy adaptator;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">Adapter(Adaptee adaptee) {<\/div><div class=\"cm-line\">    this.adaptee = adaptee;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public void request() {<\/div><div class=\"cm-line\">    adaptee.specificRequest();<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adapter klasy:<br>Wymaga wielokrotnego dziedziczenia (nie jest to bezpo\u015brednio mo\u017cliwe w Javie).<br>Mo\u017cemy to osi\u0105gn\u0105\u0107 wykorzystuj\u0105c interfejsy z metodami domy\u015blnymi.<br>Adapter rozszerza zar\u00f3wno klasy Target, jak i Adaptee.<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Interfejs docelowy<br>interfejs Cel {<br>niewa\u017cne \u017c\u0105danie();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Adaptee (istniej\u0105ca klasa)<br>klasa Adaptee {<br>void okre\u015bloneRequest() {<br>System.out.println(&#8220;Specjalne \u017c\u0105danie adaptatora&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Adapter (przy u\u017cyciu dziedziczenia klas)<br>klasa Adapter rozszerza Adaptee implementuje Cel {<br>@Prze\u015bciga\u0107<br>publiczne \u017c\u0105danie uniewa\u017cnienia () {<br>okre\u015blone \u017c\u0105danie();<br>}<br>}<br>Korzy\u015bci i kompromisy:<br>Adapter klas dzia\u0142a dobrze w przypadku mapowania metod jeden do jednego.<br>Adapter obiekt\u00f3w zapewnia wi\u0119ksz\u0105 elastyczno\u015b\u0107 i pozwala unikn\u0105\u0107 modyfikacji kodu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Wz\u00f3r dekoratora<br>Wzorzec Dekoratora to kreatywny wzorzec projektowy, kt\u00f3ry umo\u017cliwia dynamiczne dodawanie funkcjonalno\u015bci i zachowania do obiektu bez<br>wp\u0142ywaj\u0105c na zachowanie innych istniej\u0105cych obiekt\u00f3w w tej samej klasie. Jest to szczeg\u00f3lnie przydatne, gdy chcesz rozszerzy\u0107 obiekt<br>mo\u017cliwo\u015bci bez zmiany jego struktury.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przegl\u0105d:<br>Wzorzec Dekoratora zapewnia ulepszony interfejs oryginalnego obiektu, otaczaj\u0105c go dodatkowymi funkcjami.<br>Preferujemy kompozycj\u0119 od dziedziczenia, aby zmniejszy\u0107 obci\u0105\u017cenie zwi\u0105zane z podklasami.<br>Dekoratory mo\u017cna dodawa\u0107 w czasie wykonywania, co zapewnia elastyczno\u015b\u0107.<br>Przyk\u0142adowy scenariusz: Za\u0142\u00f3\u017cmy, \u017ce mamy obiekt choinkowy i chcemy go ozdobi\u0107 r\u00f3\u017cnymi przedmiotami, takimi jak girlanda, \u015bwiecide\u0142ka i lampki w kszta\u0142cie baniek. B\u0119dziemy przestrzega\u0107 oryginalnych konwencji projektowych Gang of Four:<br>Realizacja:<br>Najpierw utw\u00f3rz interfejs ChristmasTree:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">interfejs publiczny Choinka {<br>String dekoruj();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zaimplementuj interfejs za pomoc\u0105 podstawowego drzewa:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna ChristmasTreeImpl implementuje ChristmasTree {<br>@Prze\u015bciga\u0107<br>publiczny String dekoruj() {<br>zwr\u00f3\u0107 \u201eChoink\u0119\u201d;<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nast\u0119pnie utw\u00f3rz abstrakcyjn\u0105 klas\u0119 TreeDecorator, kt\u00f3ra implementuje ChristmasTree i przechowuje udekorowane drzewko:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiczna klasa abstrakcyjna TreeDecorator implementuje ChristmasTree {<br>prywatna choinka fina\u0142owa;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public TreeDecorator(ChristmasTree tree) {<\/div><div class=\"cm-line\">    this.tree = tree;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public String decorate() {<\/div><div class=\"cm-line\">    return tree.decorate();<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Teraz utw\u00f3rz konkretne dekoratory. Na przyk\u0142ad BubbleLights:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna BubbleLights rozszerza TreeDecorator {<br>publiczne BubbleLights(choinka) {<br>super(drzewo);<br>}<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public String decorate() {<\/div><div class=\"cm-line\">    return super.decorate() + &quot; with Bubble Lights&quot;;<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna Garland rozszerza TreeDecorator {<br>publiczna girlanda(choinka) {<br>super(drzewo);<br>}<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public String decorate() {<\/div><div class=\"cm-line\">    return super.decorate() + &quot; with Garland&quot;;<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<br>Stosowanie:<br>Stw\u00f3rz udekorowane drzewka:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna DecoratorPatternDemo {<br>public static void main(String[] args) {<br>ChristmasTree Tree1 = nowa Girlanda(new ChristmasTreeImpl());<br>System.out.println(drzewo1.dekoruj()); \/\/ Wynik: \u201eChoinka z girland\u0105\u201d<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    ChristmasTree tree2 = new BubbleLights(new Garland(new Garland(new ChristmasTreeImpl())));\n    System.out.println(tree2.decorate()); \/\/ Output: &#034;Christmas tree with Garland with Garland with Bubble Lights&#034;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>Wz\u00f3r umo\u017cliwia dodawanie dekorator\u00f3w w czasie wykonywania, zapewniaj\u0105c elastyczno\u015b\u0107 dekorowania w razie potrzeby.<br>Pami\u0119taj, \u017ce wzorzec dekoratora jest szeroko stosowany w scenariuszach, w kt\u00f3rych chcesz ulepszy\u0107 zachowanie obiektu bez modyfikowania jego podstawowej struktury<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Wz\u00f3r elewacji<br>Wzorzec fasady to wzorzec projektu strukturalnego, kt\u00f3ry upraszcza interakcj\u0119 ze z\u0142o\u017conym podsystemem poprzez zapewnienie ujednoliconego interfejsu.<br>Dzia\u0142a jak \u201edrzwi wej\u015bciowe\u201d, aby ukry\u0107 z\u0142o\u017cono\u015b\u0107 systemu i u\u0142atwi\u0107 klientom korzystanie z systemu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Z\u0142o\u017cony<br>Wzorzec z\u0142o\u017cony to strukturalny wzorzec projektowy, kt\u00f3ry umo\u017cliwia komponowanie obiekt\u00f3w w struktury drzewiaste reprezentuj\u0105ce hierarchie cz\u0119\u015b\u0107-ca\u0142o\u015b\u0107.<br>G\u0142\u00f3wn\u0105 ide\u0105 wzorca z\u0142o\u017conego jest zbudowanie drzewiastej struktury obiekt\u00f3w, w kt\u00f3rej poszczeg\u00f3lne obiekty i obiekty z\u0142o\u017cone maj\u0105 wsp\u00f3lny interfejs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Komponent podstawowy (Dzia\u0142): Jako nasz komponent podstawowy zdefiniujemy prosty interfejs Dzia\u0142u:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dzia\u0142 interfejsu publicznego {<br>void printNazwaWydzia\u0142u();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Leaf Components (Dzia\u0142 Finansowy i Dzia\u0142 Sprzeda\u017cy): Stw\u00f3rzmy klasy dla dzia\u0142\u00f3w finansowych i sprzeda\u017cowych, oba implementuj\u0105ce interfejs Dzia\u0142u:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna Dzia\u0142 Finansowy wdra\u017ca Dzia\u0142 {<br>\/\/ Szczeg\u00f3\u0142y implementacji (np. identyfikator, nazwa)<br>public void printNazwaWydzia\u0142u() {<br>System.out.println(getClass().getSimpleName());<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna Dzia\u0142 Sprzeda\u017cy wdra\u017ca Dzia\u0142 {<br>\/\/ Szczeg\u00f3\u0142y implementacji (np. identyfikator, nazwa)<br>public void printNazwaWydzia\u0142u() {<br>System.out.println(getClass().getSimpleName());<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Te klasy li\u015bci implementuj\u0105 metod\u0119 printDepartmentName() i nie zawieraj\u0105 odniesie\u0144 do innych obiekt\u00f3w dzia\u0142u.<br>Element z\u0142o\u017cony (HeadDepartment): Jako klas\u0119 z\u0142o\u017con\u0105 utw\u00f3rzmy HeadDepartment, kt\u00f3ry b\u0119dzie zawiera\u0142 zbi\u00f3r komponent\u00f3w Department:<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">importuj java.util.ArrayList;<br>importuj java.util.List;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna Kierownik Dzia\u0142u wdra\u017ca Dzia\u0142 {<br>prywatny identyfikator ca\u0142kowity;<br>prywatna nazwa ci\u0105gu;<br>prywatna Lista dzia\u0142\u00f3w podrz\u0119dnych;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public HeadDepartment(Integer id, String name) {<\/div><div class=\"cm-line\">    this.id = id;<\/div><div class=\"cm-line\">    this.name = name;<\/div><div class=\"cm-line\">    this.childDepartments = new ArrayList&lt;&gt;();<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void printDepartmentName() {<\/div><div class=\"cm-line\">    childDepartments.forEach(Department::printDepartmentName);<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void addDepartment(Department department) {<\/div><div class=\"cm-line\">    childDepartments.add(department);<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void removeDepartment(Department department) {<\/div><div class=\"cm-line\">    childDepartments.remove(department);<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klasa HeadDepartment implementuje metod\u0119 printDepartmentName() i udost\u0119pnia metody dodawania i usuwania dzia\u0142\u00f3w podrz\u0119dnych.<br>Spos\u00f3b u\u017cycia: Mo\u017cna utworzy\u0107 instancje dzia\u0142\u00f3w li\u015bciastych (np. Dzia\u0142 Finansowy, Dzia\u0142 Sprzeda\u017cy) i dzia\u0142u z\u0142o\u017conego (np. Dzia\u0142 G\u0142\u00f3wny). Dodaj dzia\u0142y li\u015bci do kompozytu i wydrukuj ich nazwy.<br>Jawa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna G\u0142\u00f3wna {<br>public static void main(String[] args) {<br>Dzia\u0142 finans\u00f3w = nowy Dzia\u0142 Finansowy();<br>Dzia\u0142 sprzeda\u017cy = nowy Dzia\u0142 Sprzeda\u017cy();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    HeadDepartment headDepartment = new HeadDepartment(1, &#034;Company Departments&#034;);\n    headDepartment.addDepartment(finance);\n    headDepartment.addDepartment(sales);\n\n    headDepartment.printDepartmentName();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wyj\u015bcie:<br>Dzia\u0142 Finansowy<br>Dzia\u0142 sprzeda\u017cy<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wzorzec z\u0142o\u017cony umo\u017cliwia tworzenie elastycznych struktur drzewiastych, w kt\u00f3rych<br>poszczeg\u00f3lne obiekty i kompozycje (kompozyty) mo\u017cna traktowa\u0107 jednolicie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co to jest funkcja HASH !!!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcja skr\u00f3tu to funkcja matematyczna, kt\u00f3ra pobiera dane wej\u015bciowe (lub \u201ewiadomo\u015b\u0107\u201d) i zwraca ci\u0105g znak\u00f3w o sta\u0142ym rozmiarze,<br>kt\u00f3ry jest zazwyczaj ci\u0105giem cyfr i liter. Wynik ten nazywany jest \u201ewarto\u015bci\u0105 skr\u00f3tu\u201d lub po prostu \u201ewarto\u015bci\u0105 skr\u00f3tu\u201d.<br>Funkcje skr\u00f3tu s\u0105 powszechnie stosowane w informatyce i kryptografii i maj\u0105 kilka wa\u017cnych w\u0142a\u015bciwo\u015bci:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">=== Jak u\u017cy\u0142by\u015b funkcji skr\u00f3tu i \u200b\u200bjak ona dzia\u0142a?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deterministyczny: to samo wej\u015bcie b\u0119dzie zawsze generowa\u0107 ten sam skr\u00f3t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Szybko: funkcja mo\u017ce szybko obliczy\u0107 warto\u015b\u0107 skr\u00f3tu dla dowolnego wej\u015bcia.<br>Unikalne (prawie): dwa r\u00f3\u017cne dane wej\u015bciowe powinny generowa\u0107 r\u00f3\u017cne skr\u00f3ty (jest to znane jako minimalizowanie \u201ekolizji\u201d).<br>Nieodwracalne: bior\u0105c pod uwag\u0119 skr\u00f3t, okre\u015blenie oryginalnych danych wej\u015bciowych powinno by\u0107 niewykonalne obliczeniowo.<br>Jednolity: warto\u015bci skr\u00f3tu s\u0105 r\u00f3wnomiernie roz\u0142o\u017cone w przestrzeni wyj\u015bciowej.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcje skr\u00f3tu s\u0105 szeroko stosowane w r\u00f3\u017cnych aplikacjach, takich jak:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Integralno\u015b\u0107 danych: Aby upewni\u0107 si\u0119, \u017ce dane nie zosta\u0142y zmienione lub sfa\u0142szowane, poprzez por\u00f3wnanie warto\u015bci skr\u00f3tu.<br>Przechowywanie hase\u0142: bezpieczne przechowywanie zaszyfrowanych hase\u0142 zamiast rzeczywistych hase\u0142.<br>Kryptografia: u\u017cywana w podpisach cyfrowych i innych algorytmach kryptograficznych.<br>Tabele mieszaj\u0105ce: Do wydajnego wyszukiwania danych w programowaniu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">=== Podaj mi przyk\u0142ad mapy mieszaj\u0105cej. Jak by\u015b jej u\u017cy\u0142?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SHA (algorytm bezpiecznego skr\u00f3tu):<br>Obejmuje warianty takie jak SHA-1, SHA-256, SHA-384 i SHA-512.<br>SHA-256 i SHA-512 s\u0105 szeroko stosowane w kryptografii i technologii blockchain (np. Bitcoin).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">importuj java.security.MessageDigest;<br>importuj java.security.NoSuchAlgorithmException;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klasa publiczna HashExample {<br>public static void main(String[] args) {<br>pr\u00f3bowa\u0107 {<br>\/\/ Ci\u0105g wej\u015bciowy, kt\u00f3ry ma zosta\u0107 zaszyfrowany<br>String input = &#8220;Witaj, \u015bwiecie!&#8221;;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        \/\/ Create a MessageDigest instance for SHA-256\n        MessageDigest digest = MessageDigest.getInstance(&#034;SHA-256&#034;);\n\n        \/\/ Compute the hash\n        byte&#091;] hash = digest.digest(input.getBytes());\n\n        \/\/ Convert the hash bytes to a hexadecimal string\n        StringBuilder hexString = new StringBuilder();\n        for (byte b : hash) {\n            String hex = String.format(&#034;%02x&#034;, b);\n            hexString.append(hex);\n        }\n\n        \/\/ Print the resulting hash\n        System.out.println(&#034;SHA-256 Hash: &#034; + hexString.toString());\n    } catch (NoSuchAlgorithmException e) {\n        System.err.println(&#034;Error: &#034; + e.getMessage());\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dane wej\u015bciowe: Zmienna wej\u015bciowa zawiera dane, kt\u00f3re chcesz zaszyfrowa\u0107.<br>Inicjowanie MessageDigest: Instancja MessageDigest jest tworzona za pomoc\u0105 metody getInstance(&#8220;SHA-256&#8221;), kt\u00f3ra okre\u015bla algorytm mieszaj\u0105cy SHA-256.<br>Hashowanie: Metoda skr\u00f3tu oblicza skr\u00f3t danych wej\u015bciowych.<br>Konwersja szesnastkowa: Poniewa\u017c skr\u00f3t jest w formacie binarnym, u\u017cywamy p\u0119tli, aby przekonwertowa\u0107 go na bardziej czytelny ci\u0105g szesnastkowy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Umie\u015bci\u0107 i za\u0142ata\u0107? Kiedy go u\u017cywa\u0107?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zar\u00f3wno PUT, jak i PATCH s\u0105 metodami HTTP u\u017cywanymi do aktualizacji zasob\u00f3w na serwerze, ale r\u00f3\u017cni\u0105 si\u0119 sposobem obs\u0142ugi aktualizacji:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UMIE\u015aCI\u0106:<br>Pe\u0142na aktualizacja:<br>PUT s\u0142u\u017cy do ca\u0142kowitego zast\u0105pienia istniej\u0105cego zasobu.<br>W \u017c\u0105daniu nale\u017cy przes\u0142a\u0107 ca\u0142y zas\u00f3b, nawet je\u015bli zmieniana jest tylko jego cz\u0119\u015b\u0107.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli zas\u00f3b nie istnieje, PUT cz\u0119sto go tworzy (chocia\u017c to zachowanie mo\u017ce si\u0119 r\u00f3\u017cni\u0107).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">idempotentny:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Powtarzane \u017c\u0105dania PUT z tymi samymi danymi zawsze b\u0119d\u0105 skutkowa\u0107 tym samym stanem zasobu.<br>Przyk\u0142ad: Aktualizacja profilu u\u017cytkownika:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">json<br>PUT \/u\u017cytkownicy\/123<br>{<br>&#8220;imi\u0119&#8221;: &#8220;Wielis\u0142aw&#8221;,<br>&#8220;e-mail&#8221;: &#8220;velislav@example.com&#8221;,<br>\u201ewiek\u201d: 30<br>}<br>Je\u015bli zmieni si\u0119 tylko imi\u0119 i nazwisko, ale adres e-mail i wiek pozostan\u0105 takie same, nale\u017cy je nadal uwzgl\u0119dni\u0107 we wniosku.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">P\u0141ATKI:<br>Cz\u0119\u015bciowa aktualizacja:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PATCH s\u0142u\u017cy do cz\u0119\u015bciowej aktualizacji istniej\u0105cego zasobu.<br>W \u017c\u0105daniu nale\u017cy przes\u0142a\u0107 jedynie pola, kt\u00f3re ulegaj\u0105 zmianie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Idempotentny (g\u0142\u00f3wnie):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podobnie jak PUT, powtarzane \u017c\u0105dania PATCH z tymi samymi danymi zazwyczaj skutkuj\u0105 tym samym stanem zasobu.<br>Jednak zachowanie mo\u017ce zale\u017ce\u0107 od implementacji serwera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad: Aktualizacja tylko nazwy u\u017cytkownika:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">json<br>PO\u0141ATA \/u\u017cytkownicy\/123<br>{<br>&#8220;imi\u0119&#8221;: &#8220;Wielis\u0142aw&#8221;<br>}<br>Tutaj aktualizowane jest tylko pole nazwy, pozostawiaj\u0105c inne pola bez zmian.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kluczowa r\u00f3\u017cnica:<br>PUT zast\u0119puje ca\u0142y zas\u00f3b, natomiast PATCH modyfikuje tylko okre\u015blone pola zasobu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Metody HTTP z kr\u00f3tkim opisem.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GET: S\u0142u\u017cy do pobierania danych z serwera bez ich modyfikowania. Powszechnie u\u017cywane do pobierania zasob\u00f3w lub informacji.<br>POST: S\u0142u\u017cy do wysy\u0142ania danych do serwera, zazwyczaj w celu utworzenia nowego zasobu. Na przyk\u0142ad przes\u0142anie formularza lub przes\u0142anie pliku.<br>PUT: S\u0142u\u017cy do aktualizacji lub ca\u0142kowitego zast\u0105pienia istniej\u0105cego zasobu na serwerze. Je\u015bli zas\u00f3b nie istnieje, mo\u017cna go utworzy\u0107.<br>PATCH: U\u017cywany do cz\u0119\u015bciowych aktualizacji istniej\u0105cego zasobu, modyfikuj\u0105c tylko okre\u015blone pola.<br>DELETE: S\u0142u\u017cy do usuwania zasobu z serwera.<br>HEAD: Podobny do GET, u\u017cywany do pobierania nag\u0142\u00f3wk\u00f3w bez tre\u015bci zasobu.<br>OPCJE: Informuje, jakie metody HTTP s\u0105 dozwolone.<br>TRACE: U\u017cywane g\u0142\u00f3wnie do cel\u00f3w diagnostycznych poprzez powt\u00f3rzenie \u017c\u0105dania z powrotem do klienta<br>PO\u0141\u0104CZ: Tworzy tunel do serwera, cz\u0119sto u\u017cywany do po\u0142\u0105cze\u0144 SSL\/TLS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">========== Interfejs funkcjonalny ====================================<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Interfejs funkcjonalny w Javie to interfejs zawieraj\u0105cy dok\u0142adnie jedn\u0105 metod\u0119 abstrakcyjn\u0105. Interfejsy te s\u0105 u\u017cywane g\u0142\u00f3wnie w wyra\u017ceniach lambda i odwo\u0142aniach do metod, umo\u017cliwiaj\u0105c bardziej zwi\u0119z\u0142e i czytelne programowanie funkcjonalne.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kluczowe funkcje:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Pojedyncza metoda abstrakcyjna<\/strong>: Interfejs funkcjonalny ma tylko jedn\u0105 metod\u0119 abstrakcyjn\u0105. Na tym polega istota jego funkcjonalno\u015bci.<\/li>\n\n\n\n<li><strong>Metody domy\u015blne i statyczne<\/strong>: Interfejsy funkcjonalne mog\u0105 zawiera\u0107 metody domy\u015blne i statyczne, ale nie licz\u0105 si\u0119 one jako pojedyncza metoda abstrakcyjna.<\/li>\n\n\n\n<li><strong>Adnotacja @FunctionalInterface<\/strong>: Chocia\u017c ta adnotacja jest opcjonalna, pomaga, sygnalizuj\u0105c, \u017ce interfejs ma by\u0107 funkcjonalny. Je\u015bli do interfejsu zostan\u0105 dodane dodatkowe metody abstrakcyjne, kompilator zg\u0142osi b\u0142\u0105d.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Przyk\u0142ad:<\/h3>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">@FunctionalInterface<\/div><div class=\"cm-line\">interface Calculator {<\/div><div class=\"cm-line\">    int calculate(int a, int b);<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">\/\/ Using lambda expression<\/div><div class=\"cm-line\">public class Main {<\/div><div class=\"cm-line\">    public static void main(String[] args) {<\/div><div class=\"cm-line\">        \/\/ Implementing the calculate method using a lambda<\/div><div class=\"cm-line\">        Calculator addition = (a, b) -&gt; a + b;<\/div><div class=\"cm-line\">        Calculator multiplication = (a, b) -&gt; a * b;<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">        System.out.println(&quot;Addition: &quot; + addition.calculate(5, 3));  \/\/ Output: 8<\/div><div class=\"cm-line\">        System.out.println(&quot;Multiplication: &quot; + multiplication.calculate(5, 3));  \/\/ Output: 15<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Przypadek u\u017cycia:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>Calculator<\/code> interfejs w tym przyk\u0142adzie ma jedn\u0105 metod\u0119 abstrakcyjn\u0105 <code>calculate<\/code>co czyni go funkcjonalnym interfejsem.<br>Dzi\u0119ki temu mo\u017cemy u\u017cywa\u0107 wyra\u017ce\u0144 lambda dla zwi\u0119z\u0142o\u015bci i elegancji w implementacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Typowe interfejsy funkcjonalne w Javie:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java udost\u0119pnia kilka wbudowanych interfejs\u00f3w funkcjonalnych w \u015brodowisku <code>java.util.function<\/code> pakiety takie jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Orzec<\/strong>: Pobiera dane wej\u015bciowe i zwraca warto\u015b\u0107 logiczn\u0105.<\/li>\n\n\n\n<li><strong>Funkcjonowa\u0107<\/strong>: Pobiera dane wej\u015bciowe i zwraca dane wyj\u015bciowe typu R.<\/li>\n\n\n\n<li><strong>Dostawca<\/strong>: Podaje warto\u015b\u0107 bez wprowadzania danych.<\/li>\n\n\n\n<li><strong>Konsument<\/strong>: Akceptuje warto\u015b\u0107 i wykonuje akcj\u0119.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcjonalne interfejsy usprawniaj\u0105 operacje, szczeg\u00f3lnie w scenariuszach takich jak praca z kolekcjami, strumieniami lub zadaniami asynchronicznymi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Umo\u017cliwiaj\u0105 Javie przyj\u0119cie paradygmat\u00f3w programowania funkcjonalnego przy jednoczesnym zachowaniu jej obiektowo\u015bci.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">================ Funkcja wy\u017cszego rz\u0119du to ============================<br>Funkcja wy\u017cszego rz\u0119du to funkcja, kt\u00f3ra albo przyjmuje inne funkcje jako argumenty, albo zwraca funkcj\u0119 jako wynik. Inaczej m\u00f3wi\u0105c, operuje na funkcjach, traktuj\u0105c je jak \u201eobywateli pierwszej kategorii\u201d. Jest to pot\u0119\u017cna funkcja w paradygmatach programowania funkcjonalnego, umo\u017cliwiaj\u0105ca abstrakcj\u0119, ponowne wykorzystanie kodu i kompozycj\u0119.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Przyk\u0142ad funkcji wy\u017cszego rz\u0119du w Javie:<\/h3>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">import java.util.function.Function;<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public class Main {<\/div><div class=\"cm-line\">    public static void main(String[] args) {<\/div><div class=\"cm-line\">        \/\/ Higher-order function: applies a function to a value<\/div><div class=\"cm-line\">        Function&lt;Integer, Integer&gt; squareFunction = x -&gt; x * x;<\/div><div class=\"cm-line\">        int result = applyFunction(5, squareFunction);<\/div><div class=\"cm-line\">        System.out.println(&quot;Square of 5: &quot; + result);  \/\/ Output: 25<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public static int applyFunction(int value, Function&lt;Integer, Integer&gt; function) {<\/div><div class=\"cm-line\">        return function.apply(value);<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">W powy\u017cszym przyk\u0142adzie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The <code>applyFunction<\/code> metoda jest funkcj\u0105 wy\u017cszego rz\u0119du, poniewa\u017c przyjmuje inn\u0105 funkcj\u0119 (<code>Function&lt;Integer, Integer&gt;<\/code>) jako parametr.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cechy:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Akceptuje funkcje jako argumenty<\/strong>: Funkcje wy\u017cszego rz\u0119du mog\u0105 przyjmowa\u0107 inne funkcje jako dane wej\u015bciowe w celu wykonania okre\u015blonych operacji.<\/li>\n\n\n\n<li><strong>Zwraca funkcje<\/strong>: Mog\u0105 dynamicznie generowa\u0107 i zwraca\u0107 nowe funkcje.<\/li>\n\n\n\n<li><strong>Zach\u0119ca do ponownego u\u017cycia kodu<\/strong>: Promuje kod modu\u0142owy i nadaj\u0105cy si\u0119 do ponownego u\u017cycia, poniewa\u017c funkcje mo\u017cna przekazywa\u0107 i komponowa\u0107 razem.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Przypadek u\u017cycia:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W Javie funkcje wy\u017cszego rz\u0119du s\u0105 powszechnie u\u017cywane w programowaniu funkcjonalnym ze strumieniami, lambdami i odwo\u0142aniami do metod. Na przyk\u0142ad:<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">List&lt;String&gt; names = Arrays.asList(&quot;John&quot;, &quot;Jane&quot;, &quot;Jake&quot;);<\/div><div class=\"cm-line\">names.stream()<\/div><div class=\"cm-line\">     .filter(name -&gt; name.startsWith(&quot;J&quot;))  \/\/ Takes a lambda function as argument<\/div><div class=\"cm-line\">     .forEach(System.out::println);         \/\/ Takes a method reference as argument<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Funkcje wy\u017cszego rz\u0119du zapewniaj\u0105 elastyczno\u015b\u0107 i mo\u017cliwo\u015bci programom Java, umo\u017cliwiaj\u0105c programistom pisanie czystego, zwi\u0119z\u0142ego i wyrazistego kodu!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Niekt\u00f3re zestawy odpowiedzi na wywiady z prawdziwego \u015bwiata znajduj\u0105 si\u0119 tutaj.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rozumie podstawy, takie jak polimorfizm, metody statyczne i pula ci\u0105g\u00f3w<\/li>\n\n\n\n<li>znasz kolekcje (np. HashSet, TreeSet) i przypadki ich u\u017cycia.<\/li>\n\n\n\n<li>Poprawnie identyfikuje zakresy ziaren (singleton, prototype)<\/li>\n\n\n\n<li>\u015awiadomy wstrzykiwania zale\u017cno\u015bci i jego celu.<\/li>\n\n\n\n<li>wie, jak zaimplementowa\u0107 relacje wiele do wielu przy u\u017cyciu tablic skrzy\u017cowa\u0144.<\/li>\n\n\n\n<li>Rozumie cel indeks\u00f3w (cho\u0107 powierzchownie)<\/li>\n\n\n\n<li>potrafi rozr\u00f3\u017cni\u0107 architektur\u0119 monolityczn\u0105 i mikrous\u0142ugow\u0105<\/li>\n\n\n\n<li>rozumie podstawowe kompromisy (skalowalno\u015b\u0107, \u0142atwo\u015b\u0107 konserwacji)<\/li>\n\n\n\n<li>\u017ale rozumie zasad\u0119 podstawienia Liskowa i inwersj\u0119 zale\u017cno\u015bci<\/li>\n\n\n\n<li>Ma trudno\u015bci z podaniem konkretnych przyk\u0142ad\u00f3w zasady otwartej\/zamkni\u0119tej.<\/li>\n\n\n\n<li>Brakuje g\u0142\u0119bi w zarz\u0105dzaniu cyklem \u017cycia ziaren<\/li>\n\n\n\n<li>Niejasne w przypadku zaawansowanego wstrzykiwania zale\u017cno\u015bci<\/li>\n\n\n\n<li>powierzchowne zrozumienie indeks\u00f3w (indeksy z\u0142o\u017cone, optymalizacja zapyta\u0144)<\/li>\n\n\n\n<li>Nie znasz poziom\u00f3w izolacji i blokowania optymistycznego\/pesymistycznego<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Plusy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Praca ze starszym kodem w ogromnym i z\u0142o\u017conym systemie<\/li>\n\n\n\n<li>Zna SOLID\u0118<\/li>\n\n\n\n<li>Znajomo\u015b\u0107 strumieni<\/li>\n\n\n\n<li>Wyja\u015bnione indeksy i ACID<\/li>\n\n\n\n<li>Dobry poziom j\u0119zyka angielskiego<br>Wady:<\/li>\n\n\n\n<li>Brak odpowiedzialno\u015bci za wdro\u017cenie lub infrastruktur\u0119, udzia\u0142 w projektowaniu architektury<\/li>\n\n\n\n<li>Ma pewn\u0105 wiedz\u0119 na temat zasad OOP, ale naprawd\u0119 mia\u0142 trudno\u015bci z ich wyja\u015bnieniem i pomyli\u0142 niekt\u00f3re koncepcje<\/li>\n\n\n\n<li>Og\u00f3lna wiedza na temat zbior\u00f3w, ale ma luki i jest bardzo niepewna<\/li>\n\n\n\n<li>Nie rozumie r\u00f3\u017cnicy mi\u0119dzy wsp\u00f3\u0142bie\u017cno\u015bci\u0105 a r\u00f3wnoleg\u0142o\u015bci\u0105, niezbyt silna wiedza na temat wsp\u00f3\u0142bie\u017cno\u015bci<\/li>\n\n\n\n<li>Nie zag\u0142\u0119bia\u0142em si\u0119 zbytnio w architektur\u0119 mikrous\u0142ug<\/li>\n\n\n\n<li>Niejasne niekt\u00f3re koncepcje baz danych (dyskusja na temat indeks\u00f3w toczy\u0142a si\u0119 na poziomie powierzchownym)<\/li>\n\n\n\n<li>Nie uda\u0142o mi si\u0119 wyja\u015bni\u0107 blokady na \u017cywo<\/li>\n\n\n\n<li>Luki w ko\u0144cu blokuj\u0105 zrozumienie<\/li>\n\n\n\n<li>Ograniczona wiedza na temat specyfiki obs\u0142ugi wyj\u0105tk\u00f3w<\/li>\n\n\n\n<li>Zamieszanie wok\u00f3\u0142 modyfikator\u00f3w dost\u0119pu (chroniony vs. pakiet prywatny)<br>Konsensus opinii\u2026..jest<br>nie nadaje si\u0119 na stanowisko programisty Mid-Java ze wzgl\u0119du na luki w jego wiedzy technicznej.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Plusy<br>Dobrze wyja\u015bniono SOLID<br>Dobrze wyja\u015bniono OOP<br>Wyja\u015bniony sk\u0142ad (ale pocz\u0105tkowo troch\u0119 sprawia\u0142 problemy)<br>Doskona\u0142e zrozumienie kolekcji<br>R\u00f3\u017cnica mi\u0119dzy listami a zbiorami<br>Hashsets<br>Hashmapa<br>Wsp\u00f3\u0142bie\u017cnaHashmap<br>Dobra znajomo\u015b\u0107 struktur danych &#8211; stos\u00f3w, kolejek, drzew<br>Dobra znajomo\u015b\u0107 architektury jvm<br>Wyja\u015bniono wsp\u00f3\u0142bie\u017cno\u015b\u0107 vs r\u00f3wnoleg\u0142o\u015b\u0107, wykazano dobr\u0105 znajomo\u015b\u0107 aplikacji wielow\u0105tkowych<br>Dobre zrozumienie REST<br>Dobrze wyja\u015bniono indeksy db<br>Wyja\u015bniono r\u00f3\u017cne typy z\u0142\u0105cze\u0144<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jakie s\u0105 zadania SOLID? Czym jest zasada pojedynczej odpowiedzi (SRP): Klasa powinna mie\u0107 tylko jedn\u0105 przyczyn\u0119 do zmiany. [&hellip;]<\/p>\n","protected":false},"author":65283547,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1017],"tags":[11788,789678139,2549795,196,789678143],"class_list":["post-2308","post","type-post","status-publish","format-standard","hentry","category-jawa","tag-wywiad","tag-wywiad-z-programista-java","tag-jawa-2","tag-programowanie","tag-pytania-programisty-java"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4CoHV-Be","jetpack-related-posts":[{"id":2537,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d1%82%d1%80%d0%b5%d1%82%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%b5%d1%84%d0%b5%d1%81-431-%d0%b3-%d1%85%d1%80%d0%b8%d1%81\/","url_meta":{"origin":2308,"position":0},"title":"Sob\u00f3r Ekumeniczny III w Efezie (431): sp\u00f3r chrystologiczny pomi\u0119dzy Cyrylem Aleksandryjskim a Nestoriuszem a potwierdzenie nauki o Matce Bo\u017cej","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u0415\u0444\u0435\u0441 (431 \u0433.): \u0445\u0440\u0438\u0441\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0438\u044f\u0442 \u0441\u043f\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u041a\u0438\u0440\u0438\u043b \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0438\u0439\u0441\u043a\u0438 \u0438 \u041d\u0435\u0441\u0442\u043e\u0440\u0438\u0439 \u0438 \u0443\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0443\u0447\u0435\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u0411\u043e\u0433\u043e\u0440\u043e\u0434\u0438\u0446\u0430 \u041d\u0430\u0443\u0447\u043d\u043e-\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e \u0438 \u0431\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u0441\u043a\u043e \u0438\u0437\u0441\u043b\u0435\u0434\u0432\u0430\u043d\u0435 \u0410\u0432\u0442\u043e\u0440: \u0412\u0435\u043b\u0438\u0441\u043b\u0430\u0432 \u041a\u0440\u044a\u0441\u0442\u0435\u0432\u0422\u0435\u043c\u0430: \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0440\u0430\u043d\u043d\u0430\u0442\u0430 \u0426\u044a\u0440\u043a\u0432\u0430 \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u0442\u0430 \u0434\u043e\u0433\u043c\u0430\u0442\u0438\u043a\u0430\u041f\u0435\u0440\u0438\u043e\u0434: 428\u2013451 \u0433.\u041e\u0441\u043d\u043e\u0432\u043d\u043e \u0441\u044a\u0431\u0438\u0442\u0438\u0435: \u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u0415\u0444\u0435\u0441, 431 \u0433. \u0420\u0435\u0437\u044e\u043c\u0435 \u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u2026","rel":"","context":"In &quot;Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u&quot;","block_context":{"text":"Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":901,"url":"https:\/\/vkrastev1blog.com\/2024\/11\/17\/%d0%ba%d0%be%d0%bb%d0%ba%d0%be-%d0%bf%d1%80%d0%be%d1%82%d0%b5%d0%b8%d0%bd%d0%b8-%d0%b4%d0%b0-%d0%bf%d1%80%d0%b8%d0%b5%d0%bc%d0%b0%d0%bc%d0%b5-%d0%bd%d0%b0-%d0%b4%d0%b5%d0%bd\/","url_meta":{"origin":2308,"position":1},"title":"Ile bia\u0142ka je\u015b\u0107 dziennie i skutki g\u0142odu bia\u0142ka","author":"vkrastev2014","date":"17.11.2024","format":false,"excerpt":"\u041a\u043e\u043b\u043a\u043e \u043f\u0440\u043e\u0442\u0435\u0438\u043d\u0438 \u0434\u0430 \u043f\u0440\u0438\u0435\u043c\u0430\u043c\u0435 \u043d\u0430 \u0434\u0435\u043d \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0438\u0446\u0438\u0442\u0435 \u043e\u0442 \u043f\u0440\u043e\u0442\u0435\u0438\u043d\u043e\u0432 \u0433\u043b\u0430\u0434 \u041f\u0440\u0438\u0435\u043c\u044a\u0442 \u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u044a\u0447\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0438\u043d\u0438 \u043d\u0430 \u0434\u0435\u043d \u0435 \u043e\u0442 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u043e\u0440\u0430\u0434\u0438 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0438: \u0418\u0437\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0438 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u044a\u043a\u0430\u043d\u0438: \u041f\u0440\u043e\u0442\u0435\u0438\u043d\u0438\u0442\u0435 \u0441\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0438\u0442\u0435 \u0433\u0440\u0430\u0434\u0438\u0432\u043d\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u043d\u0430 \u043c\u0443\u0441\u043a\u0443\u043b\u0438\u0442\u0435, \u043a\u043e\u0436\u0430\u0442\u0430, \u043a\u043e\u0441\u0430\u0442\u0430 \u0438 \u043d\u043e\u043a\u0442\u0438\u0442\u0435. \u0422\u0435 \u0441\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0438 \u0437\u0430 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u044a\u043a\u0430\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u2026","rel":"","context":"In &quot;Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u&quot;","block_context":{"text":"Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2586,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d0%b2%d0%b5%d0%bb%d0%b8%d0%ba%d0%b0%d1%82%d0%b0-%d1%81%d1%85%d0%b8%d0%b7%d0%bc%d0%b0-%d0%be%d1%82-1054-%d0%b3-%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d1%82%d0%b5\/","url_meta":{"origin":2308,"position":2},"title":"Wielka Schizma 1054 r. \u2013 historyczne przyczyny roz\u0142amu mi\u0119dzy Ko\u015bcio\u0142em prawos\u0142awnym i rzymskokatolickim","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0412\u0435\u043b\u0438\u043a\u0430\u0442\u0430 \u0441\u0445\u0438\u0437\u043c\u0430 \u043e\u0442 1054 \u0433. \u2014 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0442\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0438 \u0437\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u041f\u0440\u0430\u0432\u043e\u0441\u043b\u0430\u0432\u043d\u0430\u0442\u0430 \u0438 \u0420\u0438\u043c\u043e\u043a\u0430\u0442\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u0442\u0430 \u0446\u044a\u0440\u043a\u0432\u0430 \u0420\u0435\u0437\u044e\u043c\u0435 \u0412\u0435\u043b\u0438\u043a\u0430\u0442\u0430 \u0441\u0445\u0438\u0437\u043c\u0430 \u043e\u0442 1054 \u0433. \u0435 \u0435\u0434\u043d\u043e \u043e\u0442 \u043d\u0430\u0439-\u0437\u043d\u0430\u0447\u0438\u043c\u0438\u0442\u0435 \u0441\u044a\u0431\u0438\u0442\u0438\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e\u0442\u043e. \u0422\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0441\u0435 \u0441\u0432\u044a\u0440\u0437\u0432\u0430 \u0441 \u043f\u0440\u0435\u043a\u044a\u0441\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0446\u044a\u0440\u043a\u043e\u0432\u043d\u043e\u0442\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0420\u0438\u043c\u0441\u043a\u0430\u0442\u0430 \u0446\u044a\u0440\u043a\u0432\u0430 \u043d\u0430 \u0417\u0430\u043f\u0430\u0434 \u0438 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b\u0441\u043a\u0430\u0442\u0430 \u0446\u044a\u0440\u043a\u0432\u0430 \u043d\u0430 \u0418\u0437\u0442\u043e\u043a. \u0421\u044a\u0431\u0438\u0442\u0438\u044f\u0442\u0430\u2026","rel":"","context":"In &quot;Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u&quot;","block_context":{"text":"Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":2663,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/10\/%d1%81%d1%8a%d0%b1%d1%80%d0%b0%d0%bd%d0%b8-%d0%bb%d0%b8%d0%bd%d0%ba%d0%be%d0%b2%d0%b5-%d0%ba%d1%8a%d0%bc-%d0%b4%d0%be%d0%b1%d1%80%d0%b8-%d1%85%d1%80%d0%b8%d1%81%d1%82%d0%b8%d1%8f%d0%bd%d1%81%d0%ba\/","url_meta":{"origin":2308,"position":3},"title":"Zebrane linki do dobrych film\u00f3w chrze\u015bcija\u0144skich z Internetu","author":"vkrastev2014","date":"10.10.2026","format":false,"excerpt":"\u0421\u044a\u0431\u0440\u0430\u043d\u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0435 \u043a\u044a\u043c \u0434\u043e\u0431\u0440\u0438 \u0425\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u043a\u0438 \u0424\u0438\u043b\u043c\u0438 \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0422\u0443\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043c \u0441\u043f\u0438\u0441\u044a\u043a \u0441 \u0434\u043e\u0431\u0440\u0438 \u0425\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u043a\u0438 \u0424\u0438\u043b\u043c\u0438 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u0421\u0442\u0430\u0442\u0438\u044f\u0442\u0430 \u0449\u0435 \u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441 \u043d\u043e\u0432\u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0435, \u043d\u0435 \u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u044f. \u0418\u043c\u0430 \u0438 \u0444\u0438\u043b\u043c\u0438 \u0441 \u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u043f\u0440\u0435\u0432\u043e\u0434 \u0438 \u0441 \u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043d\u043e \u043d\u044f\u043a\u043e\u0438 \u0441\u0430 \u0441\u0430\u043c\u043e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438 \u0435\u0437\u0438\u043a. \u041f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0442\u0435\u0437\u0438\u2026","rel":"","context":"In &quot;Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u&quot;","block_context":{"text":"Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2532,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d0%b2%d1%82%d0%be%d1%80%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d0%b0%d0%bd%d1%82%d0%b8%d0%bd\/","url_meta":{"origin":2308,"position":4},"title":"Drugi Sob\u00f3r Powszechny w Konstantynopolu (381) \u2013 potwierdzenie nauki o Duchu \u015awi\u0119tym","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0412\u0442\u043e\u0440\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b (381 \u0433.) \u2013 \u0443\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0443\u0447\u0435\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u0421\u0432\u0435\u0442\u0438\u044f \u0414\u0443\u0445 \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e\u0442\u043e \u2022 \u0412\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440\u0438 \u2022 IV \u0432\u0435\u043a \u0412\u0442\u043e\u0440\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0435\u0437 381 \u0433. \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b, \u0435 \u0435\u0434\u043d\u043e \u043e\u0442 \u043d\u0430\u0439-\u0432\u0430\u0436\u043d\u0438\u0442\u0435 \u0441\u044a\u0431\u0438\u0442\u0438\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u043d\u0430 \u0440\u0430\u043d\u043d\u043e\u0442\u043e \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e. \u041d\u0430 \u043d\u0435\u0433\u043e \u0435 \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u043d\u0430 \u041d\u0438\u043a\u0435\u0439\u0441\u043a\u0430\u0442\u0430 \u0432\u044f\u0440\u0430 \u043e\u0442 325\u2026","rel":"","context":"In &quot;Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u&quot;","block_context":{"text":"Artyku\u0142y po\u015bwi\u0119cone Biblii oraz duchowi i cia\u0142u","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":297,"url":"https:\/\/vkrastev1blog.com\/2024\/05\/15\/artifitial-eye\/","url_meta":{"origin":2308,"position":5},"title":"Sztuczne oko \u2013 jak daleko zajdzie nauka w 2026 roku","author":"vkrastev2014","date":"15.05.2024","format":false,"excerpt":"\u0418\u0437\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u043e\u0442\u043e \u043e\u043a\u043e \u2013 \u0434\u043e\u043a\u044a\u0434\u0435 \u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430\u0443\u043a\u0430\u0442\u0430 \u043f\u0440\u0435\u0437 2026 \u0433\u043e\u0434\u0438\u043d\u0430 \u041e\u0442 \u0440\u0435\u0442\u0438\u043d\u0430\u043b\u043d\u0438 \u0438\u043c\u043f\u043b\u0430\u043d\u0442\u0438 \u0434\u043e \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u0430 \u0440\u0435\u0442\u0438\u043d\u0430 \u0438 \u0442\u0440\u0430\u043d\u0441\u043f\u043b\u0430\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0446\u044f\u043b\u043e \u043e\u043a\u043e \u0418\u0434\u0435\u044f\u0442\u0430 \u0437\u0430 \u0441\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u043e \u043e\u043a\u043e, \u043a\u043e\u0435\u0442\u043e \u0434\u0430 \u0437\u0430\u043c\u0435\u043d\u0438 \u043d\u0430\u043f\u044a\u043b\u043d\u043e \u0447\u043e\u0432\u0435\u0448\u043a\u043e\u0442\u043e \u043e\u043a\u043e \u0438 \u0434\u0430 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u0438 \u0437\u0440\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0441\u043b\u0435\u043f\u0438 \u0445\u043e\u0440\u0430, \u0434\u044a\u043b\u0433\u043e \u0432\u0440\u0435\u043c\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0435\u0448\u0435 \u043f\u0440\u0435\u0434\u0438\u043c\u043d\u043e \u043d\u0430 \u043d\u0430\u0443\u0447\u043d\u0430\u0442\u0430 \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u043a\u0430. \u041f\u0440\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 \u0434\u0435\u0441\u0435\u0442\u0438\u043b\u0435\u0442\u0438\u044f\u2026","rel":"","context":"In &quot;Sztuczne narz\u0105dy \u2013 jak daleko zasz\u0142a nauka w 2026 roku&quot;","block_context":{"text":"Sztuczne narz\u0105dy \u2013 jak daleko zasz\u0142a nauka w 2026 roku","link":"https:\/\/vkrastev1blog.com\/category\/sztuczne-narzady-jak-daleko-zaszla-nauka-w-2026-roku\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/2308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/users\/65283547"}],"replies":[{"embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/comments?post=2308"}],"version-history":[{"count":6,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/2308\/revisions"}],"predecessor-version":[{"id":2314,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/2308\/revisions\/2314"}],"wp:attachment":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/media?parent=2308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/categories?post=2308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/tags?post=2308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}