{"id":163,"date":"2025-10-02T21:46:01","date_gmt":"2025-10-02T19:46:01","guid":{"rendered":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/?p=163"},"modified":"2025-10-04T20:03:55","modified_gmt":"2025-10-04T18:03:55","slug":"wzorzec-projektowy-strategia-w-prefabrykacji-zelbetowej","status":"publish","type":"post","link":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/?p=163","title":{"rendered":"Wzorzec projektowy Strategia"},"content":{"rendered":"\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Wprowadzenie<br><\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=371033068  fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"748\" src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:748\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/business-strategy-concept-with-chess-pieces-wooden-cubes-wooden-table-side-view.jpg\" alt=\"\" class=\"wp-image-165\" srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:748\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/business-strategy-concept-with-chess-pieces-wooden-cubes-wooden-table-side-view-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:219\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/business-strategy-concept-with-chess-pieces-wooden-cubes-wooden-table-side-view-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:561\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/business-strategy-concept-with-chess-pieces-wooden-cubes-wooden-table-side-view-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1478\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/business-strategy-concept-with-chess-pieces-wooden-cubes-wooden-table-side-view-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1478\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/business-strategy-concept-with-chess-pieces-wooden-cubes-wooden-table-side-view-scaled.jpg 2048w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Designed by  Freepik<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Wzorce projektowe to sprawdzone rozwi\u0105zania powtarzaj\u0105cych si\u0119 problem\u00f3w projektowych w programowaniu. Jednym z bardziej praktycznych wzorc\u00f3w jest <strong>Strategia (ang. Strategy)<\/strong>. Pozwala on na definiowanie r\u00f3\u017cnych algorytm\u00f3w, kt\u00f3re mo\u017cna stosowa\u0107 zamiennie, bez konieczno\u015bci modyfikowania kodu klas, kt\u00f3re z nich korzystaj\u0105.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Dzi\u0119ki temu aplikacja staje si\u0119 bardziej elastyczna, \u0142atwiejsza do utrzymania i rozszerzalna. Strategia jest szczeg\u00f3lnie przydatna w sytuacjach, gdy <strong>chcemy zmienia\u0107 spos\u00f3b dzia\u0142ania programu w zale\u017cno\u015bci od okoliczno\u015bci biznesowych<\/strong>.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Idea wzorca Strategia<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Wzorzec Strategia sk\u0142ada si\u0119 z trzech g\u0142\u00f3wnych element\u00f3w:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Interfejs Strategii<\/strong> \u2013 definiuje wsp\u00f3lny kontrakt dla wszystkich algorytm\u00f3w.<\/li>\n\n\n\n<li><strong>Konkretnych Strategii<\/strong> \u2013 implementacje r\u00f3\u017cnych sposob\u00f3w rozwi\u0105zania problemu.<\/li>\n\n\n\n<li><strong>Kontekstu<\/strong> \u2013 klasa, kt\u00f3ra u\u017cywa strategii, ale nie zna szczeg\u00f3\u0142\u00f3w jej implementacji.<\/li>\n<\/ol>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Dzi\u0119ki temu mo\u017cemy w dowolnym momencie \u201epodmieni\u0107\u201d strategi\u0119 i zmieni\u0107 spos\u00f3b dzia\u0142ania systemu bez ingerencji w jego struktur\u0119.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=258064617  fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/silver-formed-chocolate-isolated-dark-desk.jpg\" alt=\"\" class=\"wp-image-166\" srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/silver-formed-chocolate-isolated-dark-desk-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:200\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/silver-formed-chocolate-isolated-dark-desk-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:512\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/silver-formed-chocolate-isolated-dark-desk-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/silver-formed-chocolate-isolated-dark-desk-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1620\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/silver-formed-chocolate-isolated-dark-desk-scaled.jpg 2048w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Designed by  Freepik<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Przyk\u0142ad z prefabrykacji \u017celbetowej<br><\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1219949582  data-opt-src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/391.jpg\"  decoding=\"async\" width=\"1024\" height=\"1024\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%201024%22%20width%3D%221024%22%20height%3D%221024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%221024%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-167\" old-srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/391-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:300\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/391-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:150\/h:150\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/391-scaled.jpg 150w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:768\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/391-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1080\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/391-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1080\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/391-scaled.jpg 2048w\" \/><figcaption class=\"wp-element-caption\">Designed by  Freepik<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Prefabrykacja \u017celbetowa to dziedzina, w kt\u00f3rej logistyka odgrywa ogromn\u0105 rol\u0119. Elementy takie jak s\u0142upy, belki czy p\u0142yty stropowe maj\u0105 du\u017ce rozmiary i mas\u0119, co powoduje, \u017ce <strong>koszty transportu<\/strong> s\u0105 istotnym czynnikiem ekonomicznym ca\u0142ego przedsi\u0119wzi\u0119cia.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Koszt transportu prefabrykatu mo\u017cna oblicza\u0107 na r\u00f3\u017cne sposoby \u2013 w zale\u017cno\u015bci od zastosowanego \u015brodka transportu. Inaczej wygl\u0105daj\u0105 koszty przewozu TIR-em, inaczej transportu kolej\u0105, a jeszcze inaczej operacji d\u017awigiem na placu budowy.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\">Tutaj doskonale sprawdza si\u0119 wzorzec <strong>Strategia<\/strong>.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center\">Poni\u017cej przyk\u0142ad programu w j\u0119zyku Java, kt\u00f3ry pokazuje zastosowanie wzorca Strategia do obliczania koszt\u00f3w transportu prefabrykatu.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\n\/\/ Interfejs strategii\ninterface TransportStrategy {\n    double obliczKoszt(double wagaPrefabrykatu, double dystansKm);\n}\n\n\/\/ Transport TIR-em\nclass TransportTirem implements TransportStrategy {\n    @Override\n    public double obliczKoszt(double waga, double dystans) {\n        return 3.0 * dystans + 0.05 * waga;\n    }\n}\n\n\/\/ Transport kolej\u0105\nclass TransportKoleja implements TransportStrategy {\n    @Override\n    public double obliczKoszt(double waga, double dystans) {\n        return 2.0 * dystans + 0.02 * waga + 500; \/\/ op\u0142ata sta\u0142a\n    }\n}\n\n\/\/ Transport d\u017awigiem na placu budowy\nclass TransportDzwigiem implements TransportStrategy {\n    @Override\n    public double obliczKoszt(double waga, double dystans) {\n        return 1000 + 0.1 * waga; \/\/ dystans bez znaczenia\n    }\n}\n\n\/\/ Kontekst\nclass Prefabrykat {\n    private String nazwa;\n    private double waga;\n    private TransportStrategy strategia;\n\n    public Prefabrykat(String nazwa, double waga) {\n        this.nazwa = nazwa;\n        this.waga = waga;\n    }\n\n    public void ustawStrategieTransportu(TransportStrategy strategia) {\n        this.strategia = strategia;\n    }\n\n    public void obliczKosztTransportu(double dystans) {\n        if (strategia == null) {\n            System.out.println(&quot;Nie ustawiono strategii transportu!&quot;);\n            return;\n        }\n        double koszt = strategia.obliczKoszt(waga, dystans);\n        System.out.println(&quot;Prefabrykat: &quot; + nazwa +\n                           &quot;, koszt transportu = &quot; + koszt + &quot; PLN&quot;);\n    }\n}\n\n\/\/ Przyk\u0142adowe u\u017cycie\npublic class StrategiaPrefabrykacja {\n    public static void main(String&#x5B;] args) {\n        Prefabrykat slup = new Prefabrykat(&quot;S\u0142up \u017celbetowy&quot;, 5000);\n\n        slup.ustawStrategieTransportu(new TransportTirem());\n        slup.obliczKosztTransportu(120);\n\n        slup.ustawStrategieTransportu(new TransportKoleja());\n        slup.obliczKosztTransportu(300);\n\n        slup.ustawStrategieTransportu(new TransportDzwigiem());\n        slup.obliczKosztTransportu(0);\n    }\n}\n<\/pre><\/div><\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Zalety tego podej\u015bcia<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=241356985  data-opt-src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:614\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/5256.jpg\"  decoding=\"async\" width=\"1024\" height=\"614\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20614%22%20width%3D%221024%22%20height%3D%22614%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22614%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-168\" old-srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:614\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/5256-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:180\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/5256-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:461\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/5256-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:922\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/5256-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1799\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/5256-scaled.jpg 2048w\" \/><figcaption class=\"wp-element-caption\">Designed by  Freepik<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Elastyczno\u015b\u0107<\/strong> \u2013 \u0142atwo doda\u0107 nowy spos\u00f3b transportu , wystarczy napisa\u0107 now\u0105 klas\u0119 implementuj\u0105c\u0105 interfejs <code>TransportStrategy<\/code>.<\/p>\n\n\n\n<p><strong>Czytelno\u015b\u0107<\/strong> \u2013 logika poszczeg\u00f3lnych sposob\u00f3w transportu nie miesza si\u0119 w jednej klasie<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>\u0141atwe testowanie<\/strong> \u2013 ka\u017cd\u0105 strategi\u0119 mo\u017cna testowa\u0107 niezale\u017cnie.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Mo\u017cliwo\u015b\u0107 dynamicznej zmiany<\/strong> \u2013 w trakcie dzia\u0142ania programu mo\u017cemy zmieni\u0107 spos\u00f3b transportu prefabrykatu w zale\u017cno\u015bci od warunk\u00f3w<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#f2f0e9\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p class=\"has-text-color\" style=\"color:#000000;font-size:30px;line-height:1.1\"><strong>Wady<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<hr class=\"wp-block-separator has-text-color has-css-opacity has-background is-style-wide\" style=\"background-color:#000000;color:#000000\"\/>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-opt-id=2103365303  data-opt-src=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/medium-shot-blurry-woman-holding-paper-pieces.jpg\"  decoding=\"async\" width=\"1024\" height=\"683\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20683%22%20width%3D%221024%22%20height%3D%22683%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22683%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-169\" old-srcset=\"https:\/\/mlb55nihrfbl.i.optimole.com\/w:1024\/h:683\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/medium-shot-blurry-woman-holding-paper-pieces-scaled.jpg 1024w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:300\/h:200\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/medium-shot-blurry-woman-holding-paper-pieces-scaled.jpg 300w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:768\/h:512\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/medium-shot-blurry-woman-holding-paper-pieces-scaled.jpg 768w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1536\/h:1024\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/medium-shot-blurry-woman-holding-paper-pieces-scaled.jpg 1536w, https:\/\/mlb55nihrfbl.i.optimole.com\/w:1620\/h:1080\/q:mauto\/ig:avif\/http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/wp-content\/uploads\/2025\/10\/medium-shot-blurry-woman-holding-paper-pieces-scaled.jpg 2048w\" \/><figcaption class=\"wp-element-caption\">Designed by  Freepik<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Rozdrobnienie kodu<\/strong>&#8211; Ka\u017cda strategia to osobna klasa \u2192 przy wi\u0119kszej liczbie strategii w projekcie mo\u017ce powsta\u0107 kilkana\u015bcie lub kilkadziesi\u0105t dodatkowych klas. To utrudnia nawigacj\u0119 i utrzymanie kodu.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Konieczno\u015b\u0107 wyboru<\/strong>&#8211; Kontekst (np. <code>Prefabrykat<\/code>) nie wie sam, jakiej strategii powinien u\u017cywa\u0107 \u2013 musi to zrobi\u0107 programista lub dodatkowy mechanizm decyzyjny.<br>&#8211; Je\u015bli logika wyboru jest z\u0142o\u017cona, przenosi si\u0119 ona poza wzorzec, co komplikuje system.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Brak wsp\u00f3lnych danych mi\u0119dzy strategiami-<\/strong> Ka\u017cda strategia implementuje interfejs, ale nie ma dost\u0119pu do wewn\u0119trznych szczeg\u00f3\u0142\u00f3w innych strategii.<br>&#8211; Je\u015bli dwie strategie maj\u0105 du\u017co wsp\u00f3lnego kodu, mo\u017ce powsta\u0107 duplikacja logiki.<\/p>\n\n\n\n<p class=\"has-text-color has-extra-small-font-size\" style=\"color:#000000\"><strong>Du\u017co kodu<\/strong>&#8211; Je\u015bli mamy tylko 2\u20133 proste algorytmy, stosowanie Strategii mo\u017ce by\u0107 \u201eoverengineeringiem\u201d \u2013 czasem prosty <code>if-else<\/code> by wystarczy\u0142.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wprowadzenie Wzorce projektowe to sprawdzone rozwi\u0105zania powtarzaj\u0105cych si\u0119 problem\u00f3w projektowych w programowaniu. Jednym z bardziej praktycznych wzorc\u00f3w jest Strategia (ang. Strategy). Pozwala on na definiowanie r\u00f3\u017cnych algorytm\u00f3w, kt\u00f3re mo\u017cna stosowa\u0107 zamiennie, bez konieczno\u015bci modyfikowania kodu klas, kt\u00f3re z nich korzystaj\u0105. Dzi\u0119ki temu aplikacja staje si\u0119 bardziej elastyczna, \u0142atwiejsza do utrzymania i rozszerzalna. Strategia jest szczeg\u00f3lnie [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":164,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-163","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wzorce-projektowe"],"_links":{"self":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163"}],"version-history":[{"count":3,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions"}],"predecessor-version":[{"id":179,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions\/179"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/media\/164"}],"wp:attachment":[{"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ewelina-beben.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}