{"id":209,"date":"2023-12-10T12:56:29","date_gmt":"2023-12-10T15:56:29","guid":{"rendered":"https:\/\/mauriciobeltran.cl\/?p=209"},"modified":"2023-12-10T12:56:29","modified_gmt":"2023-12-10T15:56:29","slug":"solid-principio-de-segregacion-de-interfaz","status":"publish","type":"post","link":"https:\/\/mauriciobeltran.cl\/index.php\/2023\/12\/10\/solid-principio-de-segregacion-de-interfaz\/","title":{"rendered":"SOLID &#8211; Principio de segregaci\u00f3n de interfaz"},"content":{"rendered":"\n<p>En l\u00edneas generales este principio habla de \u00abNo forzar a un objeto depender de funciones que no necesita\u00bb el cual, dependiendo del nivel de abstracci\u00f3n puede interpretarse como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Soluciones de software que dependen de aplicaciones especificas que no necesitan<\/li>\n\n\n\n<li>Componentes que poseen clases que no necesitan<\/li>\n\n\n\n<li>Clases que dependen de funciones que no necesitan<\/li>\n<\/ul>\n\n\n\n<p>En vez de pasar una sola soluci\u00f3n (o componente, o clase) con todas las posibles variantes que logren soportar distintos grupos de inter\u00e9s a un conjunto de componentes relacionados que satisfagan un grupo objetivo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ejemplo pr\u00e1ctico<\/strong><\/h2>\n\n\n\n<p>Supongamos que necesitamos dise\u00f1ar un sistema de gesti\u00f3n de biblioteca, podemos hacer una identificaci\u00f3n por rol que permita separar lo que necesita cada rol.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-26-1024x669.png\" alt=\"\" class=\"wp-image-211\" style=\"width:472px;height:308px\" width=\"472\" height=\"308\" srcset=\"https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-26-1024x669.png 1024w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-26-300x196.png 300w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-26-768x502.png 768w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-26-1536x1003.png 1536w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-26.png 1764w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/figure>\n\n\n\n<p>En este primer acercamiento, tenemos un gran componente llamado biblioteca que sirve funcionalidad a los grupos de inter\u00e9s Estudiante, Profesor y Bibliotecario. Eventualmente registrarCastigo no es una funcionalidad que sea necesaria para los primeros dos grupos de inter\u00e9s, pero si para Bibliotecario.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-27-1024x792.png\" alt=\"\" class=\"wp-image-212\" style=\"width:544px;height:421px\" width=\"544\" height=\"421\" srcset=\"https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-27-1024x792.png 1024w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-27-300x232.png 300w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-27-768x594.png 768w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-27-1536x1188.png 1536w, https:\/\/mauriciobeltran.cl\/wp-content\/uploads\/2023\/09\/image-27.png 1924w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/figure>\n\n\n\n<p>Si redise\u00f1amos la soluci\u00f3n, tenemos dos nuevas \u00abinterfaces\u00bb, Cliente y Gestor, una implementa la funcionalidad necesaria para bibliotecario, y el resto la implementa Cliente. con esto, si cambia registrarCastigo, a los otros grupos de inter\u00e9s no les afecta.<\/p>\n\n\n\n<p>Este es un proceso iterativo, por lo que, no intenten dise\u00f1arlo todo inmediatamente (o tal vez, no pierdan tanto tiempo viendo tantos futuros probables como fuesen posibles).<\/p>\n\n\n\n<p>En fin, \u00abno dependa de cosas que no necesite.\u00bb<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En l\u00edneas generales este principio habla de \u00abNo forzar a<\/p>\n","protected":false},"author":1,"featured_media":55,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,3,14,5],"tags":[],"class_list":["post-209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-architecture","category-development","category-fundamentals","category-solid"],"_links":{"self":[{"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/posts\/209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/comments?post=209"}],"version-history":[{"count":5,"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/posts\/209\/revisions"}],"predecessor-version":[{"id":217,"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/posts\/209\/revisions\/217"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/media\/55"}],"wp:attachment":[{"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/media?parent=209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/categories?post=209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mauriciobeltran.cl\/index.php\/wp-json\/wp\/v2\/tags?post=209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}