Patrones de diseño Flashcards

1
Q

Lista de patrones de arquitectectura

A

Solo para que suenen:

  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
2
Q

¿Que es SOLID?

A

Solo para que suenen:

Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion). Representa cinco principios básicos de la programación orientada a objetos y el diseño.

  • Single responsibility principle –> la noción de que un objeto solo debería tener una única razón para cambiar. Clases especializadas en un cometido concreto (responsabilidad).
  • Open/closed principle –> la noción de que las “entidades de software … deben estar abiertas para su extensión, pero cerradas para su modificación”.
  • Liskov substitution principle –> la noción de que los “objetos de un programa deberían ser reemplazables por instancias de sus subtipos sin alterar el correcto funcionamiento del programa”. Véase también diseño por contrato.
  • Interface segregation principle –> la noción de que “muchas interfaces cliente específicas son mejores que una interfaz de propósito general”
  • Dependency inversion principle –> la noción de que se debe “depender de abstracciones, no depender de implementaciones”.4​
    La Inyección de Dependencias es uno de los métodos que siguen este principio.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Que es GRASP?

A

Solo para que suenen:

En diseño orientado a objetos, GRASP son patrones generales de software para asignación de responsabilidades, es el acrónimo de “GRASP (object-oriented design General Responsibility Assignment Software Patterns)”. Aunque se considera que más que patrones propiamente dichos, son una serie de “buenas prácticas” de aplicación recomendable en el diseño de software

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

Tipos de patrones de diseño (categorias)

A
  • Creacional –> Creación de objetos
    • Abstract Factory
    • Builder Patterns
    • Factory Method
    • Prototype
    • Singleton
  • Estructural –> Problemas en la estructura
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Proxy
    • Adapter
  • Comportamiento –> de su padre y de su madre.
    • Chain of responsability
    • Command
    • Interpreter
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Template Method
    • Visitor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Patron Factory Method

A

CREACIONAL

Centralizar la creación de objetos en una clase ‘Factory’ de tal manera que no repartamos news por todo el código.

Factory Method: proporciona una interfaz para crear objetos en una superclase, mientras permite a las subclases concretar el tipo de objetos que se crearán

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

Patron Abstract Factory

A

CREACIONAL

Cuando tenemos varias jerarquías, varias familias pero con el mismo ‘apellido’ y podemos crear una clase abtracta que cubra a las familias.

Abstract Factory: nos permite producir familias de objetos relacionados sin especificar sus clases concretas

Nota: el Factory Method es un caso particular de Abstract Factory

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

Patrón Builder

A

CREACIONAL

Troceamos en partes más pequeñas la creación de una clase de creación compleja, en otras que creen cada parte por separado, más especializadas. Luego las uniremos mediante una clase Director.

Para orquestar la fusión de las distintas creaciones tenemos un Director

Builder: Crear clases especializadas en crear cada parte de un objeto muy complejo (ej Facturas + Lineas+ Condiciones)

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

Patron Prototype

A

CREACIONAL

Prototype: Define el interface de clonación (metodo clone) que deberán implementar ciertas clases de negocio que quieran permitir clonar/duplicar uno de sus objeto para obtener otro idéntico

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

Patrón Singleton

A

CREACIONAL

Se aplica a una clase concreta de la que solo queremos crear un solo objeto.

Singleton: Limitar a 1 las instancias que se puede crear de una clase determinada (truco: constructor privado + método estático)

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

Patron Flyweight

A

ESTRUCTURAL

Saca fuera de al creación ‘estandard’ de un objeto aquello que o bien es muy grande o bien es poco usado, dejando la carga de esa parte solo cuando se vaya a usar y no arrastrando todo el tiempo. Tambien con recursos compartidos a varios objetos que tendrán una referencia a la información y no una copia por cada uno.

Flyweight: 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

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

Patróno Facade

A

ESTRUCTURAL

Se ‘ocultan’ las funcionalidades de una subsistema en funciones de alto nivel.

Facade: 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

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

Patron Adapter

A

ESTRUCTURAL

Wrapper. Se pone por encima de una clase otra clase para adaptar el uso de la primera, de manera que se ‘adapte’ el uso de las clases al cliente.

Adapter: 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 a A y realizará internamente las llamadas correspondientes a B

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

Patrón State

A

COMPORTAMIENTO

Sacar lógica asociada a los estados de una clase, en otra clase que gestione los estados.

State: Consiste en crear una jerarquia de clases que se corresponde con los estados por los que pasa una entidad de negocio y en cada una de estas se define el comportamiento/logica de un estado concreto

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

Patrón Chain of Responsability (Filter)

A

COMPORTAMIENTO

Funcionalidades que no tienen que ver con el negocio especifico pero si con el NEGOCIO en cuanto a cosas que hay que hacer. Ej.:Tipo seguridad, encoding, palabras

Chain of Responsability: Representa una serie de objetos enlazados/encadenados de forma que sobre una petición dada, cada uno tendrá un unico cometido funcional y le pasará el control al siguiente “eslabon” de esa cadena.

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

Patron Memento

A

COMPORTAMIENTO

CTRL + Z

Recuerda lo que hiciste en la transacción anterior y te da la posibilidad de volver. Rollback

Memento: clases que guardan la estado actual de un objeto, por si después de una modificación hubiera que dejarlo en el estado original. Es nuestro CTRL + Z

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

Patrón Iterator

A

COMPORTAMIENTO

Poder recorrer la estructura sin que yo tenga que recorrer la estructura concreta.

Iterator: Define un interface homogéneo (ej. método next) que tienen que implementar las distintas clases de tipo colección. Así los clientes no tendrán que preocuparse por los detalles de como recorrer cada una (dará igual si es un árbol, grafo, lista….siempre se usará el método next)

17
Q

Patron Strategy

A

COMPORTAMIENTO

Cierta funcionalidad la separamos/desacoplamos de las clases principales del negocio para no tener que tocarlas. A través de Interfaces y las implementaciones que nos hagan falta y que pueden cambiar en el tiempo sin tocar nuestras clases de negocio

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

18
Q

Patron Observer

A

COMPORTAMIENTO

Suscripción y notificación de eventos. Piezas intermerdias entre subsistemas que desacopla los mensajes entre subsistemas de los propios sistemas, de tal manera que el ‘observer’ se encarge de la gestión de estos mensajes.

Observer: Conjunto de clases que se sirven para notificar a ciertos clientes (mediante suscripción) por los cambios que se producen en ciertos objetos

19
Q

¿Cuál de los siguientes términos hace referencia a patrones generales de software para asignación de responsabilidades
en el diseño orientado a objetos?

a) OOD

b) GRASP

c) Booch

d) Fan-In & Fan-Out

20
Q

Señale la respuesta INCORRECTA referente al objeto POCO en .NET:

a) Es una estructura de datos de .NET que solo contiene propiedades o campos públicos.

b) Es el acrónimo de Plain Old CLR Object.

c) No hereda de otra clase o implementa una interfaz.

d) Podrá contener miembros como: métodos. eventos y delegados.

A

d) Podrá contener miembros como: métodos. eventos y delegados.

21
Q

Se ha heredado una libreria compilada que realiza la conexión a un importante servicio de comprobación de CI@ve PIN, ¿qué patrón de diseño permite reutilizar este objeto?

a) Adaptador (Adapter)

b) Singleton

c) Chain of responsibility (Cadena de responsabilidad)

d) Iterador (Iterator)

A

a) Adaptador (Adapter). Mierda de pregunta

22
Q

Respecto alos patrones de diseño GoF (Gang of Four), indique cuál de las siguientes definiciones se corresponde con el patrón Decorator:

a) Proporciona el poder agregar una nueva funcionalidad a un objeto dinámicamente.

b) Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema.

c) Proporciona un sustituto o representante de otro objeto para controlar el acceso a éste.

d) Proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado sin exponer su representación
interna.

A

a) Proporciona el poder agregar una nueva funcionalidad a un objeto dinámicamente.

23
Q

Indique cuál de los siguientes es un patrón de tipo creacional:

a) Composite

b) Proxy

c) lterator

d) Singleton

A

d) Singleton

24
Q

El patrón de diseño cuyo propósito es desacoplar una abstracción de su implementación de manera que las dos puedan evolucionar independientemente es:

a) Facade

b) Bridge

c) Adapter

d) Wrapper

25
Q

Observe el siguiente diagrama:
El diagrama recoge la estructura de clases de un patrón de diseño que se ha considerado adecuado implementar en el nuevo sistema, este patrón permite proporcionar un representante que se encargue de controlar el acceso a un objeto, y se denomina:

a) Patrón Memento.

b) Patrón Bridge.

c) Patrón Adapter.

d) Patrón Proxy.

A

d) Patrón Proxy.

26
Q

¿Qué son los principios SOLID?

A
  • SRP –> Principio de responsabilidad única (Single Responsability Principle). Cometido concreto de las clases
  • OCP –> Principio de abierto / cerrado (Open/Close Principle). Diseño de clases que permita extenderse para crear nuevos tipos con nuevos comportamientos sin modificar las clases existentes. Deben estar abiertas para su extensión pero cerradas para su modificación
  • LSP –> Principio de sustitución de Liskov (Liskov sustitution Principle). Las clases de un programa deben ser REENPLAZABLES por instancias de sus SUBTIPOS –> Polimorfismo
  • ISP –> Principio de agregación de la interfaz (Interface segregation Principle). Misma implementación, distintas APIS según el cliente. Muchas interfaces cliente son mejores que una interfaz.
  • DIP –> Principio de inversión de dependencia (Dependency Inversion Principle). Debe depender de abstracciones y no de implementaciones.
27
Q

¿Qué tres catergorías de patrones tenemos en el GoF?

A
  • Creacional
  • Estructural
  • Comportamiento
28
Q

¿Qué patrones de acceso a datos conoce?

A

Son clases especializadad en contenter el código de acceso a la BBDD (Relacional o NoSQL)

  • DAO (Data Access Object) –> SQL en la clase
  • Repository –> Aísla la capa de datos del resto de la app. Clase normal con @repository en Spring
  • ActiveRecord –>ORMs del estilo Active Record mapean un objeto con una fila de la base de datos. En el ejemplo anterior, estaríamos mapeando el objeto User a una fila en la tabla users.
  • DataMapper –> En Java tenemos MyBatis. Como ActiveRecord pero con un EntityManager que realiza las operaciones sobre bbdd. Los objetos están totalmente aislados.
29
Q

¿Que tipo de patrón es un Singleton?

A
  • Creacional
  • Limita a 1 el número de intancias que podemos crear de una cierta clase
30
Q

¿Cuál es el objetivo del Patron Template Method?

A

Comportamiento

Proporcionar una clase base (generalmente abstracta) con un método a “medio hacer” (método plantilla)

Template Method es un patrón de diseño de comportamiento que define el esqueleto de un algoritmo en la superclase pero permite que las subclases sobrescriban pasos del algoritmo sin cambiar su estructura.