b3t5 - Patrones de diseño Flashcards
Principios GRASP (que me suenen)
General Responsability Assignmeten Software Patterns
Patrones de diseñ orientado a objetos
Information expert -> asignación de responsabilidads
Creator
Controller
Indirection
Low coupling
High cohesion
Polymorphism
Protected variations
Pure fabrication
Principios SOLID
Cuáles son y de qué tratan?
S -> Single responsability principle: cada clase tiene una sola responsabilidad. “Una clase sólo tendría que tener una razón para cambiar”
O -> Open / Closed principle: “Una clase debería estar abierta para extenderla, pero no para modificarla”
L -> Liskov sustitution principle: “Las clases derivadas deben poder ser sustituibles por sus clases base”
I -> Interface Segregation principle: Es preferible muchas interfaces específicas que una de caracter general
D -> Dependency Inversion principle: “Depender de las abstracciones y no de las implementaciones”
Nombra algunos patrones de análisis
1.Layered pattern
2.Client-server pattern
3.Master-slave pattern
4.Pipe-filter pattern
5.Broker pattern
6.Peer-to-peer pattern
7.Event-bus pattern
8.Model-view-controller pattern
9.Blackboard pattern
10.Interpreter pattern
Indica los patrones de diseño CREACIONALES
Abstract Factory
Builder
Factory method
Prototype
Singleton
Indica qué patrones de diseño son ESTRUCTURALES
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Adapter
Estos son los patrones de diseño de COMPORTAMIENTO.
No hay que aprenderse que son de esta clasificación, sólo aprenderse los creacionales y estructurales, y los que no sean de esos tipos son de comprtamiento
Chain of responsability
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template method
Vistor
Patrón SINGLETON
Creacional
1 objeto en memoria compartido por todos en la aplicación
Se consigue haciendo que el constructor sea privado y desarrollar un getInstancia que devuelva la instancia estática (creándola si todavía no existe la primera vez, o devolviendo la misma ya creada anteriormente)
Patrón FACTORY METHOD
Creacional
Se crea una clase que se encarga de construir los objetos concretos, devolviéndolo como la superclase, para que el que llama no sabe qué clase hija es.
Patrón FACTORY METHOD
Creacional
Se crea una clase que se encarga de construir los objetos concretos, devolviéndolo como la superclase, para que el que llama no sabe qué clase hija es.
Patrón BUILDER
Creacional
Hay varias clases que construyen cada parte de un objeto complejo y una clase Director que es la que se encarga de llamar a estas clases
Patrón PROXY
Estructural
Para cumplir la S de Solid y no “molestar” a la clase cliente, se crea un proxy que para el cliente es la clase real de negocio, pero en realidad ese proxy hace otras cosas extra (seguridad, … lo que sea) antes de llamar a la case real de negocio.
Para que el cliente no se entere del truco, el proxy tiene que implementar la misma interfaz padre que la clase real de negocio (polimorfismo), y el cliente lo que usa es la interfaz padre.
Patrón COMPOSITE
Estructural
Jerarquia de herencia de Elemento, que heredan Compuesto y Simple. Además Compuesto tiene n Elementos.
De esta forma con esas tres clases se puede hacer muy flexible un diseño de un caso de uso de contenedores y contenidos, tipo sección, divisón, estante, balda, producto
Patrón CHAIN OF RESPONSABILITY
Comportamiento
Es como los filters de JEE antes de los servlets
Cadena de eslabones donde cada eslabon se encarga de hacer algo extra antes de la funcionalidad principal.
Patrón COMMAND
Comportamiento
Lo que serían métodos se convierten en clases.
Se crea una interfaz Command con el método execute(), que implementan distintos clases de comandos concretos como, Print, Save, Search,… que implementan el execute a su manera.
Patrón STRATEGY
Define un interface para un cierto algoritmo de forma que podamos tener por debajo todas sus posibles versiones/implementaciones