SOLID – object oriented design

Posted on Actualizado enn

S.O.L.I.D is an acronym for the first five object-oriented design(OOD) principles by Robert C. Martin. [herencia, composición, abstracción, encapsulamiento o polimorfismo].

  • S – Single-responsiblity principle
  • O – Open-closed principle
  • L – Liskov substitution principle
  • I – Interface segregation principle
  • D – Dependency Inversion Principle

Single-responsibility Principle

Single-responsability: Each object must have only one responsability

As an example, consider a module that compiles and prints a report. Imagine such a module can be changed for two reasons. First, the content of the report could change. Second, the format of the report could change. These two things change for very different causes; one substantive, and one cosmetic. The single responsibility principle says that these two aspects of the problem are really two separate responsibilities, and should therefore be in separate classes or modules. It would be a bad design to couple two things that change for different reasons at different tim

Open/Close: Objects open for extension, closed for modification.
La forma más común de seguir el principio OCP es usar interfaces o clases abstractas de las que dependen implementaciones concretas. De esta forma puede cambiarse la implementación de la clase concreta manteniéndose la interfaz intacta.

https://www.adictosaltrabajo.com/tutoriales/solid-2/

Liskov Substitution: subclass/derived class should be like base/parent class.
Shell

class InterfazVehiculo{
function acelerar();
}

class Camion{
function acelerar() extends InterfazVehiculo{
introducirMasCombustible();
}
}

class CocheElectrico extends InterfazVehiculo{
function acelerar(){
incrementarVoltaje();
}
}

class Conductor{
function conducir(InterfazVehiculo vehiculo){
// otras funcionalidades…
v.acelerar();
}
}

https://www.adictosaltrabajo.com/tutoriales/solid-3/

Interface Segregation: lot of interfaces few methods rather than lots of methods few interfaces.

bad

good

https://www.adictosaltrabajo.com/tutoriales/solid-4/

Dependency Inversion: Components with abstractions, not with a specific implementation (concretions).

https://www.adictosaltrabajo.com/tutoriales/solid-5/

“Estos principios están en un nivel más alto que los patrones de diseño. No son un ejemplo concreto que debáis utilizar para resolver un problema. Son una forma de pensar, ideas que hay que tener en la cabeza mientras se programa para intentar mantener un código limpio y mantenible.”

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s