Estoy reuniendo aquí apuntes sobre diseño de software. Son una serie de posts que iré haciendo, humildemente y a modo de repaso, en PHP por elegir un lenguaje. Desde PHP 3 tenemos programación orientada a objetos (año 2000), desde PHP 5 tenemos objetos extremadamente avanzados (año 2005), y en las últimas versiones de PHP 7-8 en adelante, van mejorando más.
De todas formas, el diseño o arquitectura del software son agnósticos del lenguaje de programación que se utilice, con lo que estos patrones de diseño se pueden usar en cualquier otro lenguaje de programación. Sólo cambiará el cómo se programa en cada lenguaje, su sintaxis, siendo posible aplicar estos conceptos en prácticamente todos los lenguajes imperativos actuales que he podido ver.
Principios KISS, DRY, SOLID & STUPID
Patrones GRASP: experto en información, creador, alta cohesión, bajo acoplamiento, polimorfismo, indirección, controlador, fabricación pura, variaciones protegidas
Patrones GoF
Creacionales
- Object Pool.
- Fábricas: Factory, Factory Method o Abstract Factory.
- Builder o Constructor.
- Prototype.
- Singleton o instanciación única.
Estructurales
- Adaptador/Wrapper.
- Bridge/Puente.
- Composite.
- Decorator.
- Facade/Fachada.
- Flyweight o Peso Mosca.
- Proxy.
- Module.
Comportamiento
- Chain of Responsability/Cadena de Responsabilidad.
- Command/Action/Transaction.
- Interpreter.
- Iterator.
- Mediator.
- Memento.
- Observer.
- State.
- Strategy.
- Template Method.
- Visitor.
Más..
Existen más patrones y principios. Los anteriores son los clásicos. Con el tiempo se van creando nuevos que solucionan problemas más actuales. Algunos más que es común encontrar:
- Arquitectura por capas.
- MVC.
- Arquitectura hexagonal.
Bibliografía: Internet, C. Martin, GoF, Craig Larman, Wikipedia y otras fuentes varias..