b3t5 - Patrones de diseño Flashcards

1
Q

Principios GRASP (que me suenen)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Principios SOLID
Cuáles son y de qué tratan?

A

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”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Nombra algunos patrones de análisis

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Indica los patrones de diseño CREACIONALES

A

Abstract Factory
Builder
Factory method
Prototype
Singleton

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Indica qué patrones de diseño son ESTRUCTURALES

A

Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Adapter

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

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

A

Chain of responsability
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template method
Vistor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Patrón SINGLETON

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Patrón FACTORY METHOD

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Patrón FACTORY METHOD

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Patrón BUILDER

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Patrón PROXY

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Patrón COMPOSITE

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Patrón CHAIN OF RESPONSABILITY

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Patrón COMMAND

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Patrón STRATEGY

A

Define un interface para un cierto algoritmo de forma que podamos tener por debajo todas sus posibles versiones/implementaciones

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Patrón ITERATOR

A

Comportamiento
Interfaz Iterator para iterar colecciones sin tener que saber cómo se recorre esa colección concreta.

17
Q

Patrón MEMENTO

A

Comportamiento
Para poder hacer un undo, como el ctrl+z

18
Q

Patrón OBSERVER

A

Comportamiento
Sistema de notificaciones cuando una parte del sistema cambia (eventos), que notifica a clases suscritas

19
Q

Patrón STATE

A

Comportamiento
Parecido al COMMAND. Los estados de una clase se convierten en clases, y todos heredan de la clase padre Estado
Así se evitan muchos if

20
Q

Patrón TEMPLATE METHOD

A

Comportamiento

Consiste en definir una clase abstracta con el “esqueleto” de un proceso/algortimo. Algunas de las funciones definidas en esa superclase están preparadas para ser sobreescritas en las hijas y asi terminar de definir dicho proceso

21
Q

Patrón FACADE

A

Estructural
Proporciona para un subsistema (paquete con clases relacionadas) un punto unico de acceso que ofrece servicios de más alto nivel que los que ofrece cada una de las clases de ese subsistema individualmente

Se combina con un patrón creacional SINGLETON + FACTORY

22
Q

Patrón ADAPTER

A

Estructural

Una clase A que quiere usar los métodos de otra B pero no sabe o no le viene bien tal cual están definidos. El adapter será una clase intermedia que le ofrece ese método que le viene bien a A y realizará internamente las llamadas correspondientes a B

23
Q

Patrón FLYWEIGHT

A

si creo p.ej. 30.000 instancias de un objeto, y de repente nos damos cuenta de que hay una determinada info que es la misma (común) en todas las instancias, la solución es sacarlo fuera, a una clase externa. Esa info común la vamos a poner toda en una clase única y una única instancia

24
Q

Patrón ABSTRACT FACTORY

A

Creacional

el problema a solucionar por este patrón es el de crear diferentes familias de objetos relacionados o que dependen entre sí, sin especificar sus clases concretas

25
Q

Patrón DECORATOR

A

Estructural
Sirve para modificar la funcionalidad de un objeto metiéndolo dentro de otro objeto que sí tiene esa funcionalidad

26
Q

Patrón PROTOTYPE

A

Delega la clonación en el objeto, implementando una Intefaz que tenga el metodo clonar.

27
Q

Patrón BRIDGE

A

El patrón Bridge es un patrón de diseño estructural que separa una abstracción de su implementación, permitiendo que ambas puedan variar independientemente. En pocas líneas, el patrón Bridge permite desacoplar una interfaz o clase abstracta de las clases concretas que la implementan, lo que brinda mayor flexibilidad y extensibilidad al sistema.

28
Q

Patrón INTERPRETER

A

El patrón Interpreter es un patrón de diseño comportamental que se utiliza para interpretar y evaluar expresiones en un lenguaje específico. Este patrón es útil cuando se necesita definir una gramática para un lenguaje y luego implementar un intérprete que pueda evaluar o ejecutar expresiones escritas en ese lenguaje

29
Q

Patrón MEDIATOR

A

El patrón Mediator (mediador) es un patrón de diseño comportamental que se utiliza para reducir las dependencias directas entre los componentes de un sistema y promover una comunicación más ordenada y flexible entre ellos. Actúa como un intermediario que permite que los objetos se comuniquen entre sí sin que necesariamente se conozcan o referencien directamente.

En resumen, el patrón Mediator funciona de la siguiente manera:

Define un objeto mediador que centraliza la comunicación entre los diferentes componentes (también conocidos como “colegas”) del sistema. El mediador conoce a todos los colegas y les proporciona una interfaz para comunicarse entre sí.

Cada colega dentro del sistema tiene una referencia al mediador y se comunica con otros colegas a través de él, en lugar de comunicarse directamente entre ellos.

Cuando un colega necesita comunicar información o coordinar una acción con otros colegas, lo hace enviando un mensaje o notificación al mediador. El mediador decide cómo y a quién se debe transmitir la información.

El mediador procesa el mensaje y reenvía la información a los colegas relevantes que necesitan conocerla. De esta manera, los colegas no necesitan saber nada sobre los demás, lo que reduce el acoplamiento y aumenta la flexibilidad y extensibilidad del sistema.

30
Q

Patrón VISITOR

A

El patrón Visitor (visitante) es un patrón de diseño comportamental que permite agregar nuevas operaciones o funcionalidades a una estructura de objetos sin modificar sus clases. Proporciona una forma de separar los algoritmos de operación de la estructura de los objetos sobre los que operan.

En resumen, el patrón Visitor funciona de la siguiente manera:

Define una interfaz llamada “Visitor” con métodos para cada tipo de elemento que se desea visitar en la estructura de objetos.

Cada clase en la estructura de objetos debe tener un método que acepte un objeto del tipo “Visitor”. Este método se conoce como “accept” o “aceptar” en el patrón.

Crea una o varias clases concretas que implementen la interfaz “Visitor”. Cada clase concreta representa una operación específica que se desea realizar sobre la estructura de objetos.

Cuando se necesita realizar una operación en la estructura de objetos, se crea una instancia del objeto concreto del “Visitor” asociado a esa operación.

Se recorre la estructura de objetos y se llama al método “accept” de cada objeto, pasando como argumento el objeto “Visitor” correspondiente. Cada objeto acepta al “Visitor”, lo que permite que el “Visitor” ejecute la operación adecuada para ese objeto.