{"id":845,"date":"2023-03-20T20:32:38","date_gmt":"2023-03-20T19:32:38","guid":{"rendered":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/?p=845"},"modified":"2023-03-20T20:42:59","modified_gmt":"2023-03-20T19:42:59","slug":"s-o-l-i-d-1-single-responsibility-principle-srp","status":"publish","type":"post","link":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/2023\/03\/20\/s-o-l-i-d-1-single-responsibility-principle-srp\/","title":{"rendered":"S.O.L.I.D. 1 \u2013 Single Responsibility Principle (SRP)"},"content":{"rendered":"\n<p>Czym w\u0142a\u015bciwie jest SOLID? SOLID to akronim wymy\u015blony przez Roberta C.Martina. Jest to zestaw zasad stosowany w programowaniu obiektowym. Dzi\u0119ki nim powinni\u015bmy unikn\u0105\u0107 b\u0142\u0119d\u00f3w podczas tworzenia aplikacji, a nasz kod b\u0119dzie najwy\u017cszej jako\u015bci.<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\">Single Responsibility Principle (SRP) <\/span>\u2013 najprostsza i najbardziej u\u017cyteczna zasada, nazywana jest zasad\u0105 pojedynczej odpowiedzialno\u015bci. Jest tre\u015b\u0107 brzmi nast\u0119puj\u0105co:<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/pl.wikipedia.org\/wiki\/Klasa_(programowanie_obiektowe)\">Klasa<\/a>&nbsp;powinna mie\u0107 tylko jedn\u0105 odpowiedzialno\u015b\u0107 (nigdy nie powinien istnie\u0107 wi\u0119cej ni\u017c jeden pow\u00f3d do modyfikacji klasy).<\/strong><\/p>\n\n\n\n<p>Oznacza to, \u017ce klasa powinna by\u0107 odpowiedzialna tylko za jeden element programu, mie\u0107 jeden cel, jedn\u0105 funkcjonalno\u015b\u0107. Je\u017celi klasa jest odpowiedzialna za wi\u0119cej rzeczy, powinni\u015bmy j\u0105 podzieli\u0107.<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\">Przyk\u0142ad:<\/span> Mamy klas\u0119 User, kt\u00f3ra przechowuje dane u\u017cytkownika takie jak np. nazw\u0119, u\u017cytkownika, has\u0142o, email itp. W tym przypadku sprawdza r\u00f3wnie\u017c &nbsp;poprawno\u015b\u0107 podanych przez u\u017cytkownika danych.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class User {\n    private String userName;\n    private String email;\n    private String password;\n\n    public User(String userName, String email, String password) {\n        this.userName = userName;\n        this.email = email;\n        this.password = password;\n    }\n    public void checkPassword(String password){\n        \/\/code...\n    }\n    public void checkEmail(String email){\n        \/\/code...\n    }\n    public void checkUserName(String userName){\n        \/\/code...\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Ta klasa \u0142amie zasad\u0119 SRP, poniewa\u017c realizuje wi\u0119cej ni\u017c jedn\u0105 funkcj\u0119 \u2013 opr\u00f3cz przechowywania danych u\u017cytkownika, sprawdza r\u00f3wnie\u017c poprawno\u015b\u0107 danych. Rozdzielmy zatem funkcjonalno\u015b\u0107 na dwie klasy: UserSRP i UserSRPValidation.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class UserSRP {\n    private String userName;\n    private String email;\n    private String password;\n    private UserSRPValidation userSRPValidation;\n\n    public UserSRP(String userName, String email, String password) {\n        this.userName = userName;\n        this.email = email;\n        this.password = password;\n        userSRPValidation = new UserSRPValidation();\n    }\n    public void userValidation(){\n        userSRPValidation.userValidation(userName, email, password);\n    }\n}\npublic class UserSRPValidation {\n    public void userValidation(String userName, String email, String password){\n        checkPassword(password);\n        checkEmail(email);\n        checkUserName(userName);\n    }\n   private void checkUserName(String userName){\n        \/\/code...\n    }\n    private void checkPassword(String password){\n        \/\/code...\n    }\n    private void checkEmail(String email){\n        \/\/code...\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Teraz zadanie walidacji zosta\u0142o oddelegowane do klasy UserSRPValidation. Dzi\u0119ki temu podzielona zosta\u0142a odpowiedzialno\u015b\u0107, ka\u017cda klasa ma sw\u00f3j jasno postawiony cel.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Czym w\u0142a\u015bciwie jest SOLID? SOLID to akronim wymy\u015blony przez Roberta C.Martina. Jest to zestaw zasad stosowany w programowaniu obiektowym. Dzi\u0119ki nim powinni\u015bmy unikn\u0105\u0107 b\u0142\u0119d\u00f3w podczas tworzenia aplikacji, a nasz kod b\u0119dzie najwy\u017cszej jako\u015bci. Single Responsibility Principle (SRP) \u2013 najprostsza i najbardziej u\u017cyteczna zasada, nazywana jest zasad\u0105 pojedynczej odpowiedzialno\u015bci. Jest tre\u015b\u0107 brzmi nast\u0119puj\u0105co: Klasa&nbsp;powinna mie\u0107 tylko &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/2023\/03\/20\/s-o-l-i-d-1-single-responsibility-principle-srp\/\"> <span class=\"screen-reader-text\">S.O.L.I.D. 1 \u2013 Single Responsibility Principle (SRP)<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"categories":[14],"tags":[],"class_list":["post-845","post","type-post","status-publish","format-standard","hentry","category-solid"],"_links":{"self":[{"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/posts\/845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/comments?post=845"}],"version-history":[{"count":2,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/posts\/845\/revisions"}],"predecessor-version":[{"id":847,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/posts\/845\/revisions\/847"}],"wp:attachment":[{"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/media?parent=845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/categories?post=845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/tags?post=845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}