{"id":808,"date":"2022-02-21T21:42:16","date_gmt":"2022-02-21T20:42:16","guid":{"rendered":"https:\/\/wojciechsiwek.pl\/?p=808"},"modified":"2025-02-02T11:13:08","modified_gmt":"2025-02-02T10:13:08","slug":"zasada-segregacji-interfejsow","status":"publish","type":"post","link":"https:\/\/wojciechsiwek.pl\/en\/zasada-segregacji-interfejsow\/","title":{"rendered":"Interface Segregation Principle"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis Tre\u015bci<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a4f448f8007d\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a4f448f8007d\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/wojciechsiwek.pl\/en\/zasada-segregacji-interfejsow\/#Definicja\" >Definition<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/wojciechsiwek.pl\/en\/zasada-segregacji-interfejsow\/#Drobny_przyklad\" >Some example<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"definicja\"><span class=\"ez-toc-section\" id=\"Definicja\"><\/span>Definition<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The penultimate article on SOLID in object-oriented programming will be the principle of segregation of interfaces. This principle is simple to understand and simple to apply, so let's start:<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Instead of using one large interface with many behaviors, use many smaller interfaces<\/p><\/blockquote><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I think we can intuitively understand why the above rule should be applied, but nevertheless let us verbalize our thoughts. The use of many small interfaces gives us great flexibility in building classes, while depriving us of the need to implement methods that we do not need.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"drobny-przyklad\"><span class=\"ez-toc-section\" id=\"Drobny_przyklad\"><\/span>Some example<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let's create classes that will handle files. Let's start by creating an interface that includes two methods for reading and writing a file and two classes that support different file types: read-only and writable.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-java\" data-line=\"\">public interface File {\n    void readFile();\n\n    void writeFile();\n}<\/code><\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-java\" data-line=\"\">public class ReadWriteFile implements File {\n    @Override\n    public void readFile() {\n        \/\/read file code here\n    }\n\n    @Override\n    public void writeFile() {\n        \/\/write file code here\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-java\" data-line=\"\">public class ReadOnlyFile implements File {\n    @Override\n    public void readFile() {\n        \/\/read file code here\n    }\n\n    @Override\n    public void writeFile() {\n        \/\/I don&#039;t need write file method here!!!\n    }\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">As you surely noticed, our interface as it is, is a poor fit for a read-only file. It would be better like this:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-java\" data-line=\"\">public interface ReadFile {\n    void readFile();\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-java\" data-line=\"\">public interface WriteFile {\n    void writeFile();\n}<\/code><\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-java\" data-line=\"\">public class ReadOnlyFile implements ReadFile {\n    @Override\n    public void readFile() {\n        \/\/read file code here\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-java\" data-line=\"\">public class ReadWriteFile implements\n             ReadFile, WriteFile {\n    @Override\n    public void readFile() {\n        \/\/read file code here\n    }\n\n    @Override\n    public void writeFile() {\n        \/\/write file code here\n    }\n}<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">I think the above example is a sufficient idea of the essence of this principle and there is no need to dig deeper into it. However, if it is otherwise, I invite you to comment - I will be happy to answer.<\/p>","protected":false},"excerpt":{"rendered":"<p>An article on the principle of segregation of interfaces in object-oriented programming, which is a part of SOLID.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[26],"tags":[25,23,77],"class_list":["post-808","post","type-post","status-publish","format-standard","hentry","category-programowanie","tag-java","tag-programowanie","tag-solid"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zasada segregacji interfejs\u00f3w &#8211; Wojciech Siwek<\/title>\n<meta name=\"description\" content=\"Artyku\u0142 dotycz\u0105cy zasady segregacji interfejs\u00f3w w programowaniu obiektowym, kt\u00f3ra to zasada wchodzi w sk\u0142ad SOLID.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wojciechsiwek.pl\/en\/zasada-segregacji-interfejsow\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zasada segregacji interfejs\u00f3w &#8211; Wojciech Siwek\" \/>\n<meta property=\"og:description\" content=\"Artyku\u0142 dotycz\u0105cy zasady segregacji interfejs\u00f3w w programowaniu obiektowym, kt\u00f3ra to zasada wchodzi w sk\u0142ad SOLID.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wojciechsiwek.pl\/en\/zasada-segregacji-interfejsow\/\" \/>\n<meta property=\"og:site_name\" content=\"Wojciech Siwek\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-21T20:42:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-02T10:13:08+00:00\" \/>\n<meta name=\"author\" content=\"Wojciech Siwek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wojciech Siwek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/\"},\"author\":{\"name\":\"Wojciech Siwek\",\"@id\":\"http:\\\/\\\/wojciechsiwek.pl\\\/#\\\/schema\\\/person\\\/eb4246ee83fb20ed02fc723e28258677\"},\"headline\":\"Zasada segregacji interfejs\u00f3w\",\"datePublished\":\"2022-02-21T20:42:16+00:00\",\"dateModified\":\"2025-02-02T10:13:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/\"},\"wordCount\":218,\"publisher\":{\"@id\":\"http:\\\/\\\/wojciechsiwek.pl\\\/#\\\/schema\\\/person\\\/eb4246ee83fb20ed02fc723e28258677\"},\"keywords\":[\"java\",\"programowanie\",\"SOLID\"],\"articleSection\":[\"Programowanie\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/\",\"url\":\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/\",\"name\":\"Zasada segregacji interfejs\u00f3w &#8211; Wojciech Siwek\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/wojciechsiwek.pl\\\/#website\"},\"datePublished\":\"2022-02-21T20:42:16+00:00\",\"dateModified\":\"2025-02-02T10:13:08+00:00\",\"description\":\"Artyku\u0142 dotycz\u0105cy zasady segregacji interfejs\u00f3w w programowaniu obiektowym, kt\u00f3ra to zasada wchodzi w sk\u0142ad SOLID.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/zasada-segregacji-interfejsow\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/wojciechsiwek.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zasada segregacji interfejs\u00f3w\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/wojciechsiwek.pl\\\/#website\",\"url\":\"http:\\\/\\\/wojciechsiwek.pl\\\/\",\"name\":\"Wojciech Siwek\",\"description\":\"Programista na pocz\u0105tku swojej \u015bcie\u017cki w IT\",\"publisher\":{\"@id\":\"http:\\\/\\\/wojciechsiwek.pl\\\/#\\\/schema\\\/person\\\/eb4246ee83fb20ed02fc723e28258677\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/wojciechsiwek.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\\\/\\\/wojciechsiwek.pl\\\/#\\\/schema\\\/person\\\/eb4246ee83fb20ed02fc723e28258677\",\"name\":\"Wojciech Siwek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/cropped-logo.png\",\"url\":\"https:\\\/\\\/wojciechsiwek.pl\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/cropped-logo.png\",\"contentUrl\":\"https:\\\/\\\/wojciechsiwek.pl\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/cropped-logo.png\",\"width\":313,\"height\":306,\"caption\":\"Wojciech Siwek\"},\"logo\":{\"@id\":\"https:\\\/\\\/wojciechsiwek.pl\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/cropped-logo.png\"},\"sameAs\":[\"https:\\\/\\\/wojciechsiwek.pl\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zasada segregacji interfejs\u00f3w &#8211; Wojciech Siwek","description":"An article on the principle of segregation of interfaces in object-oriented programming, which is a part of SOLID.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wojciechsiwek.pl\/en\/zasada-segregacji-interfejsow\/","og_locale":"en_GB","og_type":"article","og_title":"Zasada segregacji interfejs\u00f3w &#8211; Wojciech Siwek","og_description":"Artyku\u0142 dotycz\u0105cy zasady segregacji interfejs\u00f3w w programowaniu obiektowym, kt\u00f3ra to zasada wchodzi w sk\u0142ad SOLID.","og_url":"https:\/\/wojciechsiwek.pl\/en\/zasada-segregacji-interfejsow\/","og_site_name":"Wojciech Siwek","article_published_time":"2022-02-21T20:42:16+00:00","article_modified_time":"2025-02-02T10:13:08+00:00","author":"Wojciech Siwek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wojciech Siwek","Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/#article","isPartOf":{"@id":"https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/"},"author":{"name":"Wojciech Siwek","@id":"http:\/\/wojciechsiwek.pl\/#\/schema\/person\/eb4246ee83fb20ed02fc723e28258677"},"headline":"Zasada segregacji interfejs\u00f3w","datePublished":"2022-02-21T20:42:16+00:00","dateModified":"2025-02-02T10:13:08+00:00","mainEntityOfPage":{"@id":"https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/"},"wordCount":218,"publisher":{"@id":"http:\/\/wojciechsiwek.pl\/#\/schema\/person\/eb4246ee83fb20ed02fc723e28258677"},"keywords":["java","programowanie","SOLID"],"articleSection":["Programowanie"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/","url":"https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/","name":"Zasada segregacji interfejs\u00f3w &#8211; Wojciech Siwek","isPartOf":{"@id":"http:\/\/wojciechsiwek.pl\/#website"},"datePublished":"2022-02-21T20:42:16+00:00","dateModified":"2025-02-02T10:13:08+00:00","description":"An article on the principle of segregation of interfaces in object-oriented programming, which is a part of SOLID.","breadcrumb":{"@id":"https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wojciechsiwek.pl\/zasada-segregacji-interfejsow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/wojciechsiwek.pl\/"},{"@type":"ListItem","position":2,"name":"Zasada segregacji interfejs\u00f3w"}]},{"@type":"WebSite","@id":"http:\/\/wojciechsiwek.pl\/#website","url":"http:\/\/wojciechsiwek.pl\/","name":"Wojciech Siwek","description":"Software developer at the beginning of his career in IT","publisher":{"@id":"http:\/\/wojciechsiwek.pl\/#\/schema\/person\/eb4246ee83fb20ed02fc723e28258677"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/wojciechsiwek.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"http:\/\/wojciechsiwek.pl\/#\/schema\/person\/eb4246ee83fb20ed02fc723e28258677","name":"Wojciech Siwek","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/wojciechsiwek.pl\/wp-content\/uploads\/2021\/03\/cropped-logo.png","url":"https:\/\/wojciechsiwek.pl\/wp-content\/uploads\/2021\/03\/cropped-logo.png","contentUrl":"https:\/\/wojciechsiwek.pl\/wp-content\/uploads\/2021\/03\/cropped-logo.png","width":313,"height":306,"caption":"Wojciech Siwek"},"logo":{"@id":"https:\/\/wojciechsiwek.pl\/wp-content\/uploads\/2021\/03\/cropped-logo.png"},"sameAs":["https:\/\/wojciechsiwek.pl"]}]}},"_links":{"self":[{"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/posts\/808","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/comments?post=808"}],"version-history":[{"count":6,"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/posts\/808\/revisions"}],"predecessor-version":[{"id":814,"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/posts\/808\/revisions\/814"}],"wp:attachment":[{"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/media?parent=808"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/categories?post=808"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wojciechsiwek.pl\/en\/wp-json\/wp\/v2\/tags?post=808"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}