{"id":852,"date":"2023-03-20T20:54:20","date_gmt":"2023-03-20T19:54:20","guid":{"rendered":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/?p=852"},"modified":"2023-03-20T20:54:20","modified_gmt":"2023-03-20T19:54:20","slug":"s-o-l-i-d-4-interface-segregation-principle-isp","status":"publish","type":"post","link":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/2023\/03\/20\/s-o-l-i-d-4-interface-segregation-principle-isp\/","title":{"rendered":"S.O.L.I.D. 4 \u2013 Interface Segregation Principle (ISP)"},"content":{"rendered":"\n<p><span style=\"text-decoration: underline;\">Interface Segregation Principle (ISP)<\/span> \u2013 czyli zasada segregacji interfejs\u00f3w. M\u00f3wi o tym, \u017ce:<\/p>\n\n\n\n<p><strong>Wiele dedykowanych interfejs\u00f3w jest lepsze ni\u017c jeden og\u00f3lny.<\/strong><\/p>\n\n\n\n<p>Zasada ISP m\u00f3wi o tym, \u017ceby tworzy\u0107 jak najbardziej uproszczone interfejsy \/ klasy abstrakcyjne, tak aby klasy, kt\u00f3re ich u\u017cywaj\u0105 wykorzystywa\u0142y wszystkie ich metody.<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\">Przyk\u0142ad:<\/span> Na podstawie interfejsu Animal tworzone s\u0105 poszczeg\u00f3lne klasy zwierz\u0105t np. Bird i Fish. Jednak nie wszystkie metody z interfejsu Animal mog\u0105 by\u0107 u\u017cyte przez te klasy (\u0142amana jest zasada ISP). Dlatego nale\u017cy podzieli\u0107 ten interfejs na kilka mniejszych np. Animal, Swimable, Flyable, Runable.<\/p>\n\n\n\n<p>Przed refaktoryzacj\u0105:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public interface Animal {\r\n    void eat();\r\n    void reproduction();\r\n    void fly();\r\n    void swim();\r\n    void run();\r\n}\r\npublic class Fish implements Animal{\r\n    @Override\r\n    public void eat() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void reproduction() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void fly() {}\r\n\r\n    @Override\r\n    public void swim() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void run() {}\r\n}\r\npublic class Bird implements Animal{\r\n    @Override\r\n    public void eat() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void reproduction() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void fly() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void swim() {}\r\n\r\n    @Override\r\n    public void run() {\r\n        \/\/code...\r\n    }\r\n}\r\n<\/code><\/pre>\n\n\n\n<p>Po refaktoryzacji:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public interface Animal {\r\n    void eat();\r\n    void reproduction();\r\n}\r\npublic interface Swimable {\r\n    void swim();\r\n}\r\npublic interface Flyable {\r\n    void fly();\r\n}\r\npublic interface Runable {\r\n    void run();\r\n}\r\npublic class Fish implements Animal, Swimable{\r\n    @Override\r\n    public void eat() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void reproduction() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void swim() {\r\n        \/\/code...\r\n    }\r\n}\r\npublic class Bird implements Animal, Flyable, Runable{\r\n    @Override\r\n    public void eat() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void reproduction() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void fly() {\r\n        \/\/code...\r\n    }\r\n\r\n    @Override\r\n    public void run() {\r\n        \/\/code...\r\n    }\r\n}\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Interface Segregation Principle (ISP) \u2013 czyli zasada segregacji interfejs\u00f3w. M\u00f3wi o tym, \u017ce: Wiele dedykowanych interfejs\u00f3w jest lepsze ni\u017c jeden og\u00f3lny. Zasada ISP m\u00f3wi o tym, \u017ceby tworzy\u0107 jak najbardziej uproszczone interfejsy \/ klasy abstrakcyjne, tak aby klasy, kt\u00f3re ich u\u017cywaj\u0105 wykorzystywa\u0142y wszystkie ich metody. Przyk\u0142ad: Na podstawie interfejsu Animal tworzone s\u0105 poszczeg\u00f3lne klasy zwierz\u0105t &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-4-interface-segregation-principle-isp\/\"> <span class=\"screen-reader-text\">S.O.L.I.D. 4 \u2013 Interface Segregation Principle (ISP)<\/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-852","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\/852","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=852"}],"version-history":[{"count":1,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/posts\/852\/revisions"}],"predecessor-version":[{"id":853,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/posts\/852\/revisions\/853"}],"wp:attachment":[{"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/media?parent=852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/categories?post=852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anna-mastalerczuk.profesjonalnyprogramista.pl\/index.php\/wp-json\/wp\/v2\/tags?post=852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}