Interface Segregation Principle
Clase 14 de 26 • Curso de Patrones de Diseño y Buenas Prácticas en PHP
Contenido del curso
Clase 14 de 26 • Curso de Patrones de Diseño y Buenas Prácticas en PHP
Contenido del curso
Bernardo Ayala Montezuma
Bernardo Aguayo Ortega
Reinaldo Mendoza
Carlos Eduardo Gomez García
Faber Edison Ordoñez Alvarado
Jose Orlando Parra Soto
Juan Pena Verdú
Marco Alexander Mateo Mateo
Usuario anónimo
María Sierra
Daniel Ponce
Luis Manuel Brito Romero
Daniel Meza
Usuario anónimo
GARCIA CAMARENA EZEQUIEL
Bernardo Aguayo Ortega
Jose Manuel del Villar Soriano
Luis Abdel Rangel Castro
Jesus Gaviria Rubio
Sergio Estrella
Muñoz Ortiz Leonel
SEBASTIAN SALAZAR
Adriana Joali Rebollar Cid
Luis Fernando Zarazua Aguilar
Jose Efrey Rodriguez
Fernando Hernandez
sebastian miranda hernandez
Fernando Mejia
Mario Alejandro Macias Ortiz
Carlos Andres Castañeda Osorio
Elisa Zamarron Muñoz
El principio de segregación de interfaces nos dice un poco como estructurar nuestras interfaces de modo que cuando una clase implementa una interface, no se le exija implementar métodos que no necesita.
Gracias hermano, mucho más claro
Muy buena tu abstracción del concepto
De una forma más simplificada:
"Si una clase implementa una interfaz, y la interfaz le obliga definir un método que no necesita, entonces probablemente tu clase no está implementando la interfaz correcta"
Y una solución a ello puede ser:
Divide esa interfaz en interfaces más específicas, y en tus clases solo implementa las interfaces que necesites.
Gran aporte, mucho mas claro y simplificado
siempre acudo a tus comentarios por que son de gran ayuda, muchas gracias
El principio de segregación de la interfaz (ISP, por sus siglas del inglés «Interface Segregation Principle») establece que los clientes de un programa dado sólo deberían conocer de éste aquellos métodos que realmente usan, y no aquellos que no necesitan usar.
¡Muchas gracias! :D
¡Genial!
Resumen:
En palabra simples el principio de segregación de interfaz nos indica que no debemos de dar más de la información necesaria a los módulos que van a funcionar.
PRINCIPIO DE SEGRACION DE INTERFAZ
Ahhh ahora si entendí mucho mejor lo que es una interfaz. Excelente!
La interfaz viene a ser un contrato. Por lo que todos los métodos que la interfaz contenga, la clase que le implemente debe usarlos a fuerza. Por eso es que hay que optimizarlo de la manera que lo especifica este principio. Así no se usan métodos que estén de más.
Ayudan mucho a la legibilidad.
Nota: este principio dice como estructurar las interfaces. De modo que cuando una clase implementa una interface no se le exija implementar métodos que no necesita o no son propios.
así de simple
Hablan de buenas prácticas, pero realmente creo que en sus ejemplos les faltó un mejor nombre para sus variables. Es cierto que el ejemplo es fácilmente entendible, pero si solamente se viera la variable v en otra parte del código no se sabría fácilmente que es un vehículo.
Hay que ser finos!!!
El analisis antes de empezar a echar codigo
Quedó super claro el principio con éste ejemplo! :D
Como se veria el diagrama de clases del ejemplo ?
encontré este blog que lo explica con código super fácil https://enmilocalfunciona.io/principios-solid/
<?php //Ejemplo no aplicando el principio de segregación de interfaces. interface Workable { public function canCode();//Función de más. public function code();//Función reemplazable en otra interfaz. public function test();//Función reemplazable en otra interfaz. } class Programmer implements Workable //Implementa a Workable. { public function canCode() { return true; } public function code() { return 'coding'; } public function test() { return 'testing in localhost'; } } class Tester implements Workable { //La función canCode sirve para describir al objeto lo cual puede hacerse mediante una interfaz. public function canCode() { return false; } //La función code no tiene ninguna funcionalidad public function code() { throw new Exception("Opps! I can\'t code"); } public function test() { return 'testing in test server'; } } class ProjectManagment { public function processCode(Workable $member) { if ($member->canCode()) {//Primero debe verficar un método repetitivo (se declara en cada workable) antes de poderlo ejecutar. echo $member->code();// } } } //Ejemplo aplicando el principio de segregación de interfaces. interface CodeAble { public function code();//Declaración de una sola función para codificar. } interface testAble { public function test();//Declaración de una sola función para programar. } class ProgrammerI implements CodeAble, TestAble { public function code() { return 'coding'; } public function test() { return 'testing in localhost'; } } class TesterI implements CodeAble { public function code() { return 'coding'; } } class ProjectManagmentI { public function processCode(CodeAble $member)//En el mismo tipo se verifica si soporta procesar código. { echo $member->code(); } } $testerguy = new Tester(); $programerguy = new Programmer(); $manager = new ProjectManagment(); $manager->processCode($testerguy); $manager->processCode($programerguy); $testerguyI = new TesterI(); $programerguyI = new ProgrammerI(); $managerI = new ProjectManagmentI(); $managerI->processCode($testerguyI); $managerI->processCode($programerguyI); ?>
gran explicación ....
Una clase puede implementar tantas interfaces como sea necesario ....
Aporte: Aplicando el Principio Segregación de Interface cada cliente solo tiene acceso a lo que necesita. También conseguimos que los detalles dependan de las abstracciones y no las abstracciones de los detalles que es muy importante para que las necesidades las marque el cliente.
Muy bien es un ejemplo claro y etendible!
Es decir solo valida lo validable, No lo obvio.
Hacer interfaces más específicas que permitan crear los métodos estrictamente necesarios pensando en todas aquellas las clases que los pueden implementar.
Me gustó tu definición, además este video me pareció mejor explicado que los dos anteriores.