No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

16 Días
12 Hrs
1 Min
11 Seg

Extensibilidad

7/14
Recursos

Aportes 18

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¡Hola!

Con el tema de interfaces se recomienda tener mucho en cuenta el principio I de los principios SOLID, es decir, Interface segregation o segregación de interfaces, este principio consiste en que una clase no debería de tener implementada una interfaz con más métodos de los que necesita, ejemplo, de una interfaz llamada IAnimales que tiene los siguientes métodos:

  • Volar
  • Comer
  • Correr
  • Caminar

Una clase llamada Perro no debería de poder implementar esta interfaz, porque un perro no puede volar (a menos que estés en una película de terror), aplicando el principio de segregación de interfaces, se recomienda dividir esta interfaz, ejemplo:

interface IAnimales {
  correr(): void;
  caminar(): void;
}

interface IAnimalesVoladores extends IAnimales {
  volar(): void;
}

interface IAnimalesNoVoladores extends IAnimales {
  noVolar(): void;
  saltar(): void;
}

class Pajaro implements IAnimalesVoladores {

  public correr(): void {}
  public caminar(): void {}
}

class Perro implements IAnimalesNoVoladores {
  public volar(): void {}
  public noVolar(): void {}
  public saltar(): void {}
  public correr(): void {}
  public caminar(): void {}
}

Espero que te sea de ayuda este aporte.

La extensibilidad es una medida de la capacidad de extender un sistema y el nivel de esfuerzo requerido para implementar la extensión.

💡 Documentación de todas las convenciones a las que se ha llegado.

Extensibilidad:

Capacidad de agregar nuevas cosas sin la necesidad de modificar en gran forma lo ya existente

Interfaz

Estipula las reglas que, las clases que lo implementen, tienen que seguir.
En este sentido, una interfaz puede entenderse como un contrato abstracto que establece el comportamiento esperado del componente que la implementa, así como las restricciones, requisitos y formatos de entrada y salida que deben cumplirse.

trabajar con interfaces, al principio es muy chocante, suelen ser conceptos muy abstractos

Extensibilidad:

  • Cambios sencillos y comprensibles
  • Cambios por contrato y/o interfaz
    requiere…
  • Comprender el problema
  • Consenso en la norma estándar


El chiste está en iterar, rápido, sencillo y con amplios márgenes de mejora

solo reorganize el codigo para que se vea desde lo mas independiente (arriba) hasta lo mas dependiente (abajo)

// HttpGateway file
import 'http' from 'HttpModule'

class HttpGateway:
  private url = '/api'
  public method fetchManu(resource) is
    // url will be /api/users
    return http.get(url + '/' + resource)
// file client
import 'httpGateway' from 'HttpGateway'
class UserService:
  public method getAll() is
    return httpGateway.fetchMany('users')

Esto me ha sucedido con bash script, tuve que implementar algo asi pero con llamadas para manipular al sistema operativo.

Pero lo hice sin tener esta teoría, solo fue intuición, tambien me hace recordar cosas que se hacen en redes.

Usar tantas herramientas dentro de un proyecto puede ser enredoso pero si no se aplican patrones, espero mucho de este curso para fortalecer las bases del diseño de patrones

En TS es muy común usar interfaces.

Las interfaces son muy usadas en el proyecto que estoy actualmente trabajando con CSharp, el concepto es claro para mi.

Vine a trabajar con interfaces en la implementación de los servicios que utilizo en Spring Boot, defino una clase para implementar dichos contratos, y otra para implmentar los repositorios de mi clase en función.
De hecho hace poco por no decir días, hice algo similar, resulta que el software estaba implementado en Event Tracking llamado X, por cuestiones de negocio se solicitó cambiar este proveedor por Y. Mi sorpresa fué cuando entré y vi la implementación de X, primero no estaba centralizado, segundo, estaba fuertemente acoplado, y tercero estaba mal regado por todas partes del código, así que creé la EventTrackingInterface y esta solucionó mis problemas.

Excelente clase, todo super interesante y claro 👍

Creo que toda esta explicación de contratos y el ejemplo de RestGateway y GraphqlGateway son parte de lo que es el Principio de Inversión de Dependencias (5to principio SOLID) https://blog.logrocket.com/dependency-inversion-principle-typescript/

si con servicios WCF me gusta esa implementación pero se que actualmente se esta usando mas servicios REST.

En algunas imágenes colocas depende de y en otras dice esta está compuesta por,, ¿cuál es la diferencia ? Gracias , excelente contenido
yo debo decir que nunca he trabajado así, que de repente te lleguen con cambios y que tenga que aplicar estas cosas que se ven sencillas pero que pudiera complicarme mucho implementándolas, tal vez tenga que estudiar mas la programación orientada a objetos.
"Hay que agregar cambios con los menos cambios posibles" ¿Por qué esto es así? lo dijo pero no explicó.