Diseño Flashcards

1
Q

¿Qué problema resuelve el patrón de Strategy en Java?

A

El patrón de estrategia le permite introducir un nuevo algoritmo o una nueva estrategia sin cambiar el código que usa ese algoritmo. Por ejemplo, el método Collections.sort () que ordena la lista del objeto usa el patrón de estrategia para comparar objetos. Dado que cada objeto utiliza una estrategia de comparación diferente, puede comparar varios objetos de forma diferente sin cambiar el método de clasificación.

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

¿Cuándo utilizar el patrón de diseño de estrategia en Java?

A

El patrón de estrategia es bastante útil para implementar un conjunto de algoritmos relacionados como algoritmos de compresión, estrategias de filtrado, etc. El patrón de diseño de estrategia le permite crear clases de contexto , que utilizan clases de implementación de estrategia para aplicar reglas de negocio.

Un buen ejemplo de un patrón de estrategia del propio JDK es un método Collections.sort () y la interfaz Comparator , que es una interfaz de estrategia y define una estrategia para comparar objetos. Debido a este patrón, no necesitamos modificar el método sort () (cerrado para modificación) para comparar cualquier objeto; al mismo tiempo, podemos implementar una interfaz de Comparador para definir una nueva estrategia de comparación (abierta para extensión).

Este patrón en realidad se basa en el principio de diseño abierto-cerrado y si comprende ese principio, entonces es bastante fácil para usted comprender el patrón de estrategia también. En realidad, es mejor conocer los principios SOLID, ya que muchos patrones de diseño se basan en eso.

Si está buscando un curso completo sobre principios de diseño orientado a objetos, le recomiendo que consulte Principios SOLID de diseño orientado a objetos de Steve Smith en Pluralsight. Este es un curso útil para cualquiera que busque fortalecer su conocimiento general de la arquitectura de software.
[Imagen]

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

¿En qué concepto de programación orientada a objetos se basa el patrón de diseño del decorador?

A

El patrón de decorador aprovecha la composición para proporcionar nuevas funciones sin modificar la clase original. Una muy buena pregunta directa para la ronda telefónica. Esto queda bastante claro en el diagrama UML del patrón Decorator, como puede ver, el Componente está asociado con un Decorator.
[Imagen]

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

¿Qué es el patrón Decorator en Java? ¿Puede dar un ejemplo de un patrón de decorador?

A

El patrón Decorator es otra pregunta popular sobre patrones de diseño de Java, que es común debido a su uso intensivo en el paquete java.io. BufferedReader y BufferedWriter son un excelente ejemplo de patrón decorador en Java.

Si desea obtener más información sobre cómo un patrón de Decorator puede ayudarlo a escribir un mejor código, también le sugiero que consulte el curso de Educación sobre patrones de diseño de software: mejores prácticas para desarrolladores de software . Este curso proporciona muchos ejemplos del mundo real en el lenguaje de programación Java, lo que facilita la comprensión y aplicación de estos patrones de diseño y la escritura de un mejor código.
[Imagen]

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

¿Cuál es la diferencia entre el patrón Decorator y Proxy en Java?

A

Otra pregunta y un truco complicados sobre el patrón de diseño de Java es que tanto Decorator como Proxy implementan la interfaz del Objeto que decoran o encapsulan. Como dije, muchos patrones de diseño de Java pueden tener una estructura similar o exactamente la misma, pero difieren en su intención.

El patrón Decorator se usa para implementar la funcionalidad en un objeto ya creado, mientras que un patrón Proxy se usa para controlar el acceso a un objeto.

Una diferencia más entre el patrón de diseño Decorator y Proxy es que el Decorator no crea un objeto; en su lugar, obtiene el objeto en su constructor, mientras que Proxy en realidad crea objetos. También puede leer el análisis y diseño de Head First para entender la diferencia entre ellos.

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

¿Cuándo usar el patrón de diseño Singleton en Java?

A

Cuando necesita solo una instancia de una clase y desea que esté disponible globalmente, puede usar el patrón Singleton . Sin embargo, no es gratuito porque aumenta el acoplamiento entre clases y las hace difíciles de probar. Esta es una de las preguntas de patrones de diseño más antiguas de las entrevistas de Java. Consulte la respuesta para una discusión más detallada.

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

¿Qué es el bloqueo doble verificado en Singleton?

A

El entrevistador nunca dejará de hacer esta pregunta. Es la madre de todas las preguntas frecuentes en Java. Singleton significa que podemos crear solo una instancia de esa clase, en términos de singleton DCL es la forma de garantizar que, a cualquier costo, solo se cree una instancia en un entorno de subprocesos múltiples, es posible que simultáneamente dos subprocesos intenten crear una instancia de clase singleton en En esa situación, no podemos estar seguros de que solo se cree una instancia, así que evite esta situación usando el bloqueo de doble verificación usando el bloque sincronizado donde creamos el objeto.
Ejemplo de código: [Imagen]

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

¿Cómo se crea Singleton seguro para subprocesos en Java?

A

Suele ser un seguimiento de las preguntas anteriores de Java. Hay más de una forma de hacerlo. Puede crear una clase Singleton segura para subprocesos en Java creando la única instancia durante la carga de la clase. Los campos estáticos se inicializan durante la carga de la clase y Classloader garantizará que la instancia no será visible hasta que esté completamente creada. Puede ver más mi artículo para obtener un ejemplo de código para crear un singleton seguro para subprocesos en Java.

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

¿Puede escribir Singleton seguro para subprocesos en Java?

A

Hay varias formas de escribir Singleton seguro para subprocesos en Java, como escribiendo singleton con bloqueo de doble verificación, mediante el uso de una instancia estática Singleton inicializada durante la carga de la clase. Por cierto, usar la enumeración de Java para crear singleton seguro para subprocesos es la forma más simple. Consulte Por qué Enum singleton es mejor en Java para obtener más detalles.

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

¿Cuál es la diferencia entre los patrones de State y de Strategy?

A
  1. Aunque la estructura o el diagrama de clases del patrón de Estado y Estrategia es el mismo, su intención es completamente diferente. El patrón de estado se usa para hacer algo específico según el estado, mientras que la estrategia le permite cambiar entre algoritmos sin cambiar el código que lo usa.
  2. Esta es una pregunta interesante de entrevista de patrón de diseño de Java ya que tanto el patrón de estrategia como el de estado tienen la misma estructura. Si observa el diagrama de clases de UML para ambos patrones, se ven exactamente iguales, pero su intención es totalmente diferente.

El patrón de diseño de estado se usa para definir y administrar el estado de un objeto, mientras que el patrón de estrategia se usa para definir un conjunto de algoritmos intercambiables, y el cliente debe elegir uno de ellos. Por lo tanto , el patrón de estrategia es un patrón impulsado por el cliente, mientras que Object puede administrar su estado por sí mismo.

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

¿Cuál es la diferencia entre Asociación, Agregación y Composición en OOP?

A

Cuando un objeto está relacionado con otro objeto se llama asociación. Tiene dos formas, agregación y composición. la primera es la forma de asociación laxa donde el objeto relacionado puede sobrevivir individualmente, mientras que más tarde es una forma más fuerte de asociación donde un objeto relacionado no puede sobrevivir individualmente. Por ejemplo, la ciudad es una agregación de personas pero es la composición de partes del cuerpo.

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

¿Cuál es la diferencia entre el patrón Decorador, Proxy y Adaptador en Java?

A

De nuevo, se ven similares porque su estructura o diagrama de clases es muy similar, pero su intención es bastante diferente. Decorator agrega funcionalidad adicional sin tocar la clase, Proxy proporciona control de acceso y Adapter se usa para hacer que dos interfaces incompatibles funcionen juntas.

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

¿Cuál es el principio de diseño orientado a 5 objetos de SOLID?

A

SOLID es el término dado por el tío Bob en su libro clásico, el Código Limpio , uno de los libros de lectura obligada para los programadores. En SOLID, cada carácter representa un principio de diseño:
S para el principio de responsabilidad única
O para el principio de diseño abierto cerrado
L para el principio de sustitución de Liskov
I para el principio de segregación de interfaz
D para el principio de inversión de dependencia

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

¿Cuál es la diferencia entre composición y herencia en OOP?

A

Esta es otra gran pregunta sobre el concepto de OOPS porque prueba lo que importa, ambos son muy importantes desde la perspectiva del diseño de la clase. Aunque tanto la composición como la herencia le permiten reutilizar el código, antes es más flexible que después. La composición permite que la clase obtenga una característica adicional en tiempo de ejecución, pero la herencia es estática. No puede cambiar la función en tiempo de ejecución mediante la sustitución de una nueva implementación. Vea la respuesta para una discusión más detallada.

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

¿Cuál es el patrón de diseño de Observer en Java? ¿Cuándo usas el patrón Observer en Java?

A

Esta es una de las preguntas de entrevista de patrones de diseño de Java más comunes. El patrón del observador se basa en la notificación, hay dos tipos de objeto Sujeto y Observador. Siempre que haya un cambio en el estado del sujeto, el observador recibirá una notificación. Consulte ¿Qué es el patrón de diseño de Observer en Java con ejemplos de la vida real para obtener más detalles?

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

¿Cuándo utilizar el patrón de diseño Composite en Java? ¿Lo has usado anteriormente en tu proyecto?

A

Esta pregunta sobre el patrón de diseño se hace en la entrevista de Java no solo para verificar la familiaridad con el patrón compuesto, sino también para saber si un candidato tiene la experiencia de la vida real o no.

El patrón compuesto también es un patrón de diseño básico de Java, que le permite tratar tanto el objeto completo como el parcial para tratarlo de manera similar. El código del cliente, que se ocupa de un objeto compuesto o individual, no diferencia entre ellos, es posible porque la clase Composite también implementa la misma interfaz que su parte individual.

Uno de los buenos ejemplos del patrón compuesto de JDK es la clase JPanel , que es tanto Componente como Contenedor. Cuando se llama al método paint () en JPanel , se llama internamente al paint () método de componentes individuales y dejar que se dibujen a sí mismos.
En la segunda parte de esta pregunta de entrevista de patrón de diseño, sea sincero; si lo ha usado, diga que sí; de lo contrario, diga que está familiarizado con el concepto y lo usó por su cuenta.

17
Q

¿Cuándo utilizar el patrón de diseño del método Template en Java?

A

El patrón de plantilla es otra pregunta de entrevista de patrón de diseño de Java central popular. Lo he visto aparecer muchas veces en el propio proyecto de la vida real. El patrón de plantilla describe un algoritmo en forma de método de plantilla y permite que la subclase implemente pasos individuales.

El punto crítico a mencionar, al responder a esta pregunta, es que el método de la plantilla debe ser final para que la subclase no pueda anular y cambiar los pasos del algoritmo. Aún así, al mismo tiempo, los pasos individuales deben ser abstractos, para que las clases secundarias puedan implementarlos.

18
Q

¿Qué es el patrón Factory en Java? ¿Cuál es la ventaja de utilizar un método de fábrica estático para crear un objeto?

A

El patrón de fábrica en Java es un patrón de diseño de creación de Java y uno de los favoritos en muchas entrevistas de Java. Patrón de fábrica utilizado para crear un objeto proporcionando métodos de fábrica estáticos. Hay muchas ventajas de proporcionar métodos de fábrica como el almacenamiento en caché de objetos inmutables, la fácil introducción de nuevos objetos, etc.

19
Q

¿Cuál es la diferencia entre Factory y Abstract Factory en Java?

A

Ya he respondido esta pregunta en detalle con mi artículo con el mismo título. La principal diferencia es que Abstract Factory crea una fábrica mientras que el patrón Factory crea objetos. Entonces, ambos abstraen la lógica de la creación, pero uno es para la fábrica y el otro para los artículos. Puedes ver aquípara responder a esta pregunta de la entrevista sobre patrones de diseño de Java.

20
Q

¿Cuándo usar la inyección de Setter y Constructor en el patrón de inyección de dependencia (Injection pattern)?

A

Utilice la inyección Setter para proporcionar dependencias opcionales de un objeto mientras que utilice la inyección Constructor para proporcionar una dependencia obligatoria de un objeto, sin la cual no puede funcionar. Esta pregunta está relacionada con el patrón de diseño de inyección de dependencia y se hace principalmente en el contexto del marco Spring, que ahora se ha convertido en un estándar para el desarrollo de aplicaciones Java.

Dado que Spring proporciona un contenedor IOC, también le brinda una forma de especificar dependencias mediante el uso de métodos de establecimiento o constructores. También puedes echar un vistazo a mi publicación anterior sobre el mismo tema.

21
Q

¿Cuándo utilizar el patrón Adaptador en Java? ¿Lo has usado antes en tu proyecto?

A

Utilice el patrón Adaptador cuando necesite hacer que dos clases funcionen con interfaces incompatibles. El patrón del adaptador también se puede utilizar para encapsular el código de terceros, de modo que su aplicación solo dependa del Adaptador, que puede adaptarse cuando cambia el código de un tercero o se cambia a una biblioteca de un tercero diferente.

Por cierto, esta pregunta sobre el patrón de diseño de Java también se puede formular proporcionando un escenario real. Puede seguir leyendo Head First Design Pattern para obtener más información sobre el patrón del adaptador y su uso en el mundo real. El libro también está actualizado para Java 8, por lo que aprenderá nuevas formas de Java 8 para implementar estos viejos patrones de diseño.

22
Q

¿Puede escribir código para implementar un patrón de diseño productor-consumidor (producer-consumer) en Java?

A

El patrón de diseño productor-consumidor es un patrón de diseño de concurrencia en Java, que se puede implementar de varias formas. Si está trabajando en Java 5, entonces es mejor usar la utilidad Concurrency para implementar el patrón productor-consumidor en lugar de esperar y notificar en Java . Aquí hay un excelente ejemplo de implementación del problema productor-consumidor usando BlockingQueue en Java.

23
Q

¿Qué es el patrón de diseño de Builder en Java? ¿Cuándo usas el patrón Builder?

A

El patrón de constructor en Java es otro patrón de diseño de creación en Java y a menudo se pregunta en las entrevistas de Java debido a su uso específico cuando necesita construir un objeto que requiere múltiples propiedades, algunas opcionales y otras obligatorias. Consulte Cuándo usar el patrón Builder en Java para obtener más detalles.

24
Q

¿Cuál es el principio de diseño abierto cerrado (Open closed design principle) en Java?

A

El principio de diseño abierto cerrado es uno de los principios SÓLIDOS definidos por Robert C. Martin, conocido popularmente como el tío Bob en su libro más popular, Código limpio . Este principio advierte que el código debe estar abierto para extensión pero cerrado para modificación.

Al principio, esto puede parecer conflictivo, pero una vez que explore el poder del polimorfismo, comenzará a encontrar patrones que puedan proporcionar estabilidad y flexibilidad a este principio.

Uno de los ejemplos críticos de esto es el patrón de diseño de Estado y Estrategia, donde la clase Contexto está cerrada para modificaciones y se proporciona nueva funcionalidad escribiendo código nuevo implementando un nuevo estado de estrategia. Consulte este artículo para obtener más información sobre el principio abierto cerrado.

25
Q

¿Cuál es la diferencia entre abstracción y encapsulación en Java?

A

Aunque tanto la abstracción como la encapsulación parecen similares porque ocultan la complejidad y simplifican la interfaz externa, existe una sutil diferencia entre ellas. La abstracción oculta la complejidad lógica mientras que la encapsulación oculta la complejidad física.

Por cierto, ya he cubierto la respuesta a esta pregunta de la entrevista de Java en mi publicación anterior como la diferencia entre la encapsulación y la abstracción en Java , aquí hay algunas diferencias más de esa publicación: [Tabla]