{"id":735,"date":"2023-12-19T20:44:06","date_gmt":"2023-12-19T19:44:06","guid":{"rendered":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=735"},"modified":"2024-01-16T11:24:50","modified_gmt":"2024-01-16T10:24:50","slug":"solid-zasada-segregacji-interfejsow","status":"publish","type":"post","link":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=735","title":{"rendered":"SOLID &#8211; Zasada segregacji interfejs\u00f3w"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"735\" class=\"elementor elementor-735\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-14bedb6 elementor-section-full_width elementor-section-stretched elementor-section-height-default elementor-section-height-default\" data-id=\"14bedb6\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8569dae\" data-id=\"8569dae\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1e7fd94 elementor-widget__width-initial elementor-widget elementor-widget-qi_addons_for_elementor_section_title\" data-id=\"1e7fd94\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"qi_addons_for_elementor_section_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-qi-section-title  qodef-decoration--italic  qodef-link--underline-draw qodef-subtitle-icon--left\">\n\t\t\t\t\t\t<h2 class=\"qodef-m-title\">\n\t\tSOLID - Zasada segregacji interfejsu\t<\/h2>\n\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f060fb1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f060fb1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-16d598e\" data-id=\"16d598e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ced9503 elementor-widget elementor-widget-text-editor\" data-id=\"ced9503\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Regu\u0142a skupiaj\u0105ca si\u0119 na interfejsach, dzi\u0119ki kt\u00f3rej kod staje si\u0119 \u0142atwiejszy w utrzymaniu i rozwijaniu. Jej stosowanie zapewnia r\u00f3wnoczesnie spe\u0142nienie pozosta\u0142ych zasad akronimu SOLID.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9597191 elementor-widget elementor-widget-text-editor\" data-id=\"9597191\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=695\"><strong>S <\/strong>&#8211; Zasada pojedynczej odpowiedzialno\u015bci (Single Responsibility Principle &#8211; SRP)<\/a><\/p><p><a href=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=704\"><strong>O<\/strong> &#8211; Zasada otwarte-zamkni\u0119te (Open-Close Principle &#8211; OCP)<\/a><\/p><p><a href=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=724\"><strong>L<\/strong> &#8211; Zasada podstawiania Liskov (Liskov Substitution Principle &#8211; LSP)<\/a><\/p><p><strong>I &#8211; Zasada segregacji interfejsu (Interface Segregation Principle &#8211; ISP)<\/strong><\/p><p><a href=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=749\"><strong>D<\/strong> &#8211; Zasada odwr\u00f3cenia zale\u017cno\u015bci (Dependency Inversion Principle &#8211; DIP)<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8dad3c4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8dad3c4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-91d1317\" data-id=\"91d1317\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c6989e2 elementor-widget elementor-widget-heading\" data-id=\"c6989e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Definicja<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-210b56b elementor-widget elementor-widget-text-editor\" data-id=\"210b56b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Interfejsy powinny by\u0107 tworzone jako ma\u0142e i specyficzne dla klas, kt\u00f3re je wykorzystuj\u0105, zamiast by\u0107 og\u00f3lne i zawiera\u0107 wiele funkcjonalno\u015bci.<\/p><p>Innymi s\u0142owy, interfejsy powinnny by\u0107 dostosowane do konkretnych potrzeb klient\u00f3w i nie zawiera\u0107 zb\u0119dnych metod, kt\u00f3re nie s\u0105 u\u017cywane przez wszytkie implementuj\u0105ce je klasy.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6ba6cb0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6ba6cb0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c838376\" data-id=\"c838376\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7aa8f60 elementor-widget elementor-widget-heading\" data-id=\"7aa8f60\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Przyk\u0142ad<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9ccadf elementor-widget elementor-widget-text-editor\" data-id=\"a9ccadf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Stowrzymy interfejs EmployeeMenager, kt\u00f3re b\u0119dzie zawiera\u0142 metody potrzebne do zatrudnienia, zwolnienia pracownika, wyp\u0142acanie mu pensji, przyznawanie bonus\u00f3w i przydzielanie zada\u0144.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bda817d elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"bda817d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>interface EmployeeManager {\n  void hire(Employee employee); \/\/ zatrudnij pracownika\n  void fire(Employee employee); \/\/ zwolnij pracownika\n  void paySalary(Employee employee); \/\/ wyp\u0142a\u0107 pensj\u0119 pracownikowi\n  void giveBonus(Employee employee); \/\/ przyznaj premi\u0119 pracownikowi\n  void assignTask(Employee employee, Task task); \/\/ przydziel zadanie pracownikowi\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9c9da84 elementor-widget elementor-widget-text-editor\" data-id=\"9c9da84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Nast\u0119pnie stworzymy klas\u0119 HRManager i Project Manager, kt\u00f3re b\u0119d\u0105 implementowa\u0107 powy\u017cszy interfejs.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bceaf4c elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"bceaf4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>class HRManager implements EmployeeManager {\n  \/\/ Metody zwi\u0105zane z rekrutacj\u0105 i zwalnianiem pracownik&oacute;w\n  public void hire(Employee employee) {\n    \/\/ logika zatrudniania pracownika\n  }\n\n  public void fire(Employee employee) {\n    \/\/ logika zwalniania pracownika\n  }\n\n  \/\/ Metody zwi\u0105zane z wyp\u0142at\u0105 pensji i premii\n  public void paySalary(Employee employee) {\n    \/\/ logika wyp\u0142acania pensji\n  }\n\n  public void giveBonus(Employee employee) {\n    \/\/ logika przyznawania premii\n  }\n\n  \/\/ Metoda zwi\u0105zana z przydzielaniem zada\u0144\n  public void assignTask(Employee employee, Task task) {\n    \/\/ logika przydzielania zada\u0144\n  }\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-332a4b9 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"332a4b9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>class ProjectManager implements EmployeeManager {\n  \/\/ Metody zwi\u0105zane z rekrutacj\u0105 i zwalnianiem pracownik&oacute;w\n  public void hire(Employee employee) {\n    \/\/ logika zatrudniania pracownika\n  }\n\n  public void fire(Employee employee) {\n    \/\/ logika zwalniania pracownika\n  }\n\n  \/\/ Metody zwi\u0105zane z wyp\u0142at\u0105 pensji i premii\n  public void paySalary(Employee employee) {\n    \/\/ logika wyp\u0142acania pensji\n  }\n\n  public void giveBonus(Employee employee) {\n    \/\/ logika przyznawania premii\n  }\n\n  \/\/ Metoda zwi\u0105zana z przydzielaniem zada\u0144\n  public void assignTask(Employee employee, Task task) {\n    \/\/ logika przydzielania zada\u0144\n  }\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8c237df elementor-widget elementor-widget-text-editor\" data-id=\"8c237df\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>W powy\u017cszym przyk\u0142adzie interfejs jest zbyt du\u017cy i zbyt og\u00f3lny. Zawiera metody, kt\u00f3re nie s\u0105 zwi\u0105zane z jednym obszarem odpowiedzialno\u015bci. Na przyk\u0142ad klasa HRManager zajmuje si\u0119 rekrutowaniem i zwalnianiem pracownik\u00f3w, ale nie powinna przydziela\u0107 im zada\u0144. Podobny problem widzimy w klasie ProjectManager, kt\u00f3ry zajmuje si\u0119 przydzielaniem zada\u0144, a nie zadaniami HRManager&#8217;a. Jest to przyk\u0142ad naruszenia zasady segregacji interfejs\u00f3w.<\/p><p>Aby poprawi\u0107 ten kod nale\u017cy podzieli\u0107 interfejst EmployeeManager na mniejsze i bardziej specyficzne interfejsy, takie jak:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f44e6f elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"1f44e6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>\/\/ Interfejs, kt&oacute;ry zawiera metody do rekrutacji i zwalniania pracownik&oacute;w\ninterface Recruiter {\n  void hire(Employee employee);\n  void fire(Employee employee);\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a277491 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"a277491\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>\/\/ Interfejs, kt&oacute;ry zawiera metody do wyp\u0142acania pensji i premii\ninterface Payroll {\n  void paySalary(Employee employee);\n  void giveBonus(Employee employee);\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bfd74dc elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"bfd74dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>\/\/ Interfejs, kt&oacute;ry zawiera metod\u0119 do przydzielania zada\u0144\ninterface ProjectLeader {\n  void assignTask(Employee employee, Task task);\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-69a2998 elementor-widget elementor-widget-text-editor\" data-id=\"69a2998\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dzi\u0119ki temu klasy HRManager i Project Manager mog\u0142yby implementowa\u0107 tylko te interfejsy, kt\u00f3rych metody s\u0105 dla nich istotne, na przyk\u0142ad:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-50c70be elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"50c70be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>\/\/ Klasa, kt&oacute;ra implementuje interfejsy Recruiter i Payroll\nclass HRManager implements Recruiter, Payroll {\n  \/\/ Metody zwi\u0105zane z rekrutacj\u0105 i zwalnianiem pracownik&oacute;w\n  public void hire(Employee employee) {\n    \/\/ logika zatrudniania pracownika\n  }\n\n  public void fire(Employee employee) {\n    \/\/ logika zwalniania pracownika\n  }\n\n  \/\/ Metody zwi\u0105zane z wyp\u0142at\u0105 pensji i premii\n  public void paySalary(Employee employee) {\n    \/\/ logika wyp\u0142acania pensji\n  }\n\n  public void giveBonus(Employee employee) {\n    \/\/ logika przyznawania premii\n  }\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a5c329d elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"a5c329d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>\/\/ Klasa, kt&oacute;ra implementuje interfejs ProjectLeader\nclass ProjectManager implements ProjectLeader {\n  \/\/ Metoda zwi\u0105zana z przydzielaniem zada\u0144\n  public void assignTask(Employee employee, Task task) {\n    \/\/ logika przydzielania zada\u0144\n  }\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ac4bab elementor-widget elementor-widget-text-editor\" data-id=\"6ac4bab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dzi\u0119ki temu rozwi\u0105zaniu kod sta\u0142 si\u0119 du\u017cy \u0142atwiejszy w utrzymaniu i nie ma zb\u0119dnych zale\u017cno\u015bci. Jest to prosty przyk\u0142ad, ale pokazuje o co chodzi w tej zasadzie.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Wydaje mi si\u0119, \u017ce jest to naj\u0142atwiejsza do zrozumienia zasada SOLID, jednak wcale nie jest przez to mniej wa\u017cna.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,33],"tags":[34,40,35,36],"class_list":["post-735","post","type-post","status-publish","format-standard","hentry","category-artykuly","category-czysty-kod","tag-czysty-kod","tag-isp","tag-java","tag-solid"],"_links":{"self":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=735"}],"version-history":[{"count":17,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/735\/revisions"}],"predecessor-version":[{"id":899,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/735\/revisions\/899"}],"wp:attachment":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}