Java Design Pattern Interview Questions and Answers
Design patterns are generally sets of standardized practices used in the software development industry. Design Pattern
community to general problems faced in every-day tasks regarding software development.
Let's have a look at the most frequently asked design pattern interview questions and answers. These questions w
as well as competitive exams.
1) Categories Java Design patterns?
Based on problem analysis, we can categorize design patterns into the following categories.
Creational patterns
o Factory method/Template
o Abstract Factory
o Builder
o Prototype
o Singleton
Structural patterns
o Adapter
o Bridge
o Filter
o Composite
o Decorator
o Facade
o Flyweight
o Proxy
Behavioral patterns
o Interpreter
o Template method/ pattern
o Chain of responsibility
o Command pattern
o Iterator pattern
o Strategy pattern
o Visitor pattern
J2EE patterns
o MVC Pattern
o Data Access Object pattern
o Front controller pattern
o Intercepting filter pattern
o Transfer object pattern
2) Expliquer les avantages du modèle de conception Java( Java design
pattern)?
o Les modèles de conception sont réutilisables dans plusieurs projets.
o Les modèles de conception offrent une solution permettant de définir l'architecture du système.
o Les modèles de conception capturent des expériences de génie logiciel
o Les modèles de conception offrent une transparence à la conception d'une application.
o Ils sont attestés et prouvés depuis qu'ils ont été construits à partir des connaissances et de
l'expérience de développeurs de logiciels experts.
3) Qu'est-ce que le Gang of Four (GOF)?
En 1994, quatre auteurs, Erich Gamma, Ralph Johnson, Richard Hel et John Vlissides, ont publié un livre
intitulé Design Patterns Elements of Reusable Object-Oriented Software . Ce livre a introduit le
concept de modèle de conception dans le développement logiciel.
Ces quatre auteurs sont connus sous le nom de Gang of Four GOF.
4) Quels sont les modèles de création (Creational Patterns)?
Les modèles de création sont liés à la manière de créer des objets. Les modèles de conception de
création sont utilisés lorsqu'une décision est prise au moment de l'instanciation d'une classe.
1. EmpRecord e1 = new EmpRecord ();
Puisque le new mot-clé est utilisé pour créer un objet en Java, nous créons donc l'instance à l'aide du
nouveau mot-clé. Dans certains cas, la nature de l'objet doit être modifiée en fonction de la nature du
programme. Dans de tels cas, nous devrions utiliser les modèles de conception créatifs pour fournir une
approche plus générale et flexible.
5) Quel est le Factory Pattern?
o C'est le modèle de conception le plus utilisé en Java.
o Ces modèles de conception appartiennent au modèle de création car ce modèle constitue l'un
des meilleurs moyens de créer un objet.
o Dans le modèle Factory, nous n'exposons pas la logique de création au client et ne référençons
l'objet créé à l'aide d'une interface standard.
o Factory Pattern permet aux sous-classes de choisir le type d'objets à créer.
o Le modèle d'usine est également appelé constructeur virtuel .
6) Qu'est-ce que le Abstract Factory Pattern?
Etats abstraits de modèles d'usine(Abstract Factory Pattern) qui définissent une classe abstraite ou une
interface permettant de créer des familles d'objets associés, sans spécifier leurs sous-classes
concrètes. Cela signifie que Abstract Factory a autorisé une classe à renvoyer une usine de classes. C'est
pourquoi le motif abstrait d'usine est d'un niveau supérieur au motif d'usine.
o Les motifs Abstract Factory fonctionnent autour des super-classes, ce qui crée d'autres classes.
o Le motif de fabrique abstraite est inclus dans le motif de création car ce motif est l’un des
meilleurs moyens de créer un objet.
o Dans le modèle Abstract Factory, une interface est susceptible de créer une fabrique d'objets
associés sans identifier explicitement leurs classes.
o Chaque usine générée peut donner les objets en fonction du modèle d’usine.
7) Expliquer les modèles(Patterns ) structurels en Java?
Les modèles structurels sont utilisés pour fournir des solutions et des normes efficaces en ce qui
concerne la composition des classes et la structure des objets. Ils dépendent du concept d'héritage et des
interfaces pour permettre à plusieurs objets ou classes de fonctionner ensemble et de former un
ensemble fonctionnel unique.
Les modèles de conception structurels sont responsables de la manière dont les classes et les objets
peuvent être composés pour former des structures plus grandes.
8) Explique le modèle(pattern) Singleton?
Le modèle Singleton en Java est un modèle qui autorise une seule instance dans une application. Un bon
exemple du motif singleton est [Link] .
Les états Singleton Pattern qui définissent une classe qui n'a qu'une instance et fournit un point d'accès
global à celle-ci.
En d'autres termes, il incombe à la classe de ne créer qu'une seule instance et toutes les autres classes
peuvent utiliser un seul objet.
Voici donc la version minimale du Singleton :
public class Singleton
{
/** Constructeur privé */
private Singleton()
{}
/** Instance unique pré-initialisée */
private static Singleton INSTANCE = new Singleton();
/** Point d'accès pour l'instance unique du singleton */
public static Singleton getInstance()
{ return INSTANCE;
}
}
9) Décrivez de combien de façons pouvez-vous créer un motif singleton?
Il existe deux manières de créer un motif Singleton.
1. Instanciation early
Il est responsable de la création d'une instance au moment du chargement.
2. Instanciation lazy
Il est responsable de la création d'instance lorsque nécessaire.
10) Quels sont les modèles d'adaptateur ( Adapter patterns)?
Le modèle d'adaptateur convertit l'interface d'une classe en une autre interface en fonction des besoins.
En d'autres termes, il vous permet de convertir l'interface en fonction des besoins tout en utilisant le
service de classe avec une interface différente.
Il est également connu sous le nom de Wrapper.
11) Illustrer les utilisations des motifs d’adaptateur?
Il est utilisé dans les cas suivants:
o Lorsqu'un objet nécessite d'utiliser une classe existante avec une interface incompatible.
o Si nous voulons créer une classe réutilisable qui collabore avec des classes qui n’ont pas
d’interface compatible.
12) Discuter de la stratégie pour décrire un modèle de conception(design
pattern)?
Les points suivants doivent être pris en compte pour décrire le modèle de conception.
o Le nom du motif et la classification.
o Le problème et la solution.
o Conséquences: les alternatives dépendantes de la langue et de la variation doivent également
être abordées.
o Utilisations: Identifiez les utilisations dans les systèmes réels et leur efficacité.
13) Quel est le motif de décorateur(decorator pattern) en Java, expliquez-le
avec un exemple?
Le modèle de décorateur est l’un des modèles de conception Java les plus populaires. Il est courant en
raison de son utilisation intensive dans [Link] (package). Le motif Decorator utilise la composition au
lieu de l'héritage pour étendre les fonctionnalités d'un objet lors de l'exécution.
BufferedReader et BufferedWriter sont d'excellents exemples de modèles de décorateur en Java.
14) Différence entre modèle de conception stratégique(strategy) et
d’état(state) en Java?
Cette question est une question fréquemment posée lors d'un entretien avec un modèle de conception
Java, car le modèle Stratégie et le modèle État ont la même structure. Le diagramme de classes UML des
deux modèles a exactement la même apparence, mais leur intention est différente.
Le modèle de conception d'état est utilisé pour gérer et définir l'état d'un objet, tandis que le modèle de
stratégie est utilisé pour décrire un ensemble d'un algorithme interchangeable.
15) Quels sont les avantages du modèle de conception composite en
Java(composite design Pattern)?
Le modèle de conception composite permet aux clients d'opérer de manière collective sur des objets
pouvant ou non représenter une hiérarchie d'objets.
L'avantage des modèles de conception composites est le suivant.
o Il décrit la hiérarchie de classes qui contient des objets primitifs et complexes.
o Cela facilite l'ajout de nouveaux types de composant.
o Il facilite avec la flexibilité de la structure avec une classe gérable ou une interface.
16) Pouvez-vous décrire les utilisations du motif composite ( composite
pattern)?
Il est utilisé dans les cas suivants:
o Lorsque nous voulons représenter une hiérarchie partielle ou complète d'objets.
o Dans le cas où nous aurions besoin d'ajouter les responsabilités de manière dynamique à l'objet
individuel sans affecter les autres objets.
17) Quels sont les modèles de conception utilisés dans la bibliothèque
JDK?
Certains des modèles de conception utilisés dans la bibliothèque JDK sont les suivants.
o Le modèle de décorateur est utilisé par les classes Wrapper.
o Le modèle Singleton est utilisé par les classes Calendar (Runtime).
o Les classes Wrapper utilisent un modèle d'usine tel qu'[Link].
o Les cadres de gestion d’événement(Event handling frameworks) utilisent un modèle
d’observateur tel que swing, awt.
18) Mentionnez l’avantage du modèle de conception Builder en Java
(builder design pattern)?
Les avantages des modèles de conception de constructeur sont les suivants.
o Cela facilite avec une séparation claire entre la construction et la représentation d'un objet.
o Il offre un meilleur contrôle du processus de construction.
o Le paramètre constructeur est réduit et est fourni dans des appels de méthode hautement
lisibles.
o Dans Pattern Design, l'objet est toujours instancié dans un état complet.
o Dans le modèle de conception du générateur, les objets immuables peuvent être rapidement
construits dans le processus de construction de l'objet.
19) Pouvez-vous écrire Singleton Thread-safe en Java?
Il existe de nombreuses façons d’écrire un singleton sans danger pour les threads en Java.
o Singleton Thread-safe peut être écrit en écrivant singleton à l'aide d'un verrouillage à double
vérification.
o Une autre solution consiste à utiliser une instance singleton statique initialisée lors du
chargement de la classe.
o En utilisant Java enum pour créer un singleton sans danger pour les threads, c'est la méthode la
plus simple.
20) Est-il possible de créer un clone d'un objet singleton?
Oui, il est possible de créer un clone d'un objet singleton.
21) Quel est le modèle de proxy( proxy pattern) et que fait-il?
Le terme proxy représente un objet représentant un autre objet. Le modèle de proxy fournit un substitut
ou un espace réservé pour un autre objectif permettant de contrôler l'accès à celui-ci.
Selon des groupes de quatre, un modèle de proxy "permet de contrôler l'accès à l'objet d'origine".
Nous pouvons effectuer de nombreuses opérations de sécurité, telles que le masquage des informations
de l'objet d'origine, le chargement à la demande, etc.
On l'appelle aussi comme substitut ou substitut.
22) Expliquez un type différent de proxies?
Il existe de nombreux cas où le modèle de proxy est bénéfique. Regardons quelques proxy différents.
Protection proxy
Il contrôle l'accès au sujet réel en fonction de certaines conditions.
Proxy virtuels (Virtual proxies)
Les proxies virtuels sont utilisés pour instancier l'objet coûteux. Le proxy gère la durée de vie du sujet
réel dans la mise en œuvre.
Il décide de la nécessité de créer l'instance et du moment de sa réutilisation. Les proxies virtuels
optimisent les performances.
Caching proxies
Les proxies de cache sont utilisés pour mettre en cache des appels coûteux au sujet réel. Le proxy peut
utiliser de nombreuses stratégies de mise en cache.
Certaines d'entre elles sont lues, écrites, en cache et basées sur le temps. Les mandataires de mise en
cache sont utilisés pour améliorer les performances.
Proxy à distance (Remote proxies)
Les proxys distants sont utilisés dans la communication d'objets distribués. Le proxy distant provoque
l'exécution sur l'objet distant en appelant une méthode d'objet local.
Proxy intelligents (Smart proxies)
Les proxy intelligents sont utilisés pour implémenter les appels de journal et le comptage des références
à l'objet.
23) Expliquer le modèle de chaîne de responsabilité(the Chain of
Responsibility Pattern)?
Dans le modèle de chaîne de responsabilité, l'expéditeur envoie une demande à une chaîne d'objets, et
tout objet de la chaîne peut gérer la demande.
Un modèle de chaîne de responsabilité évite de coupler l'expéditeur d'une demande à son
destinataire. Par exemple, un service ATM utilise le modèle de conception de la chaîne de responsabilité
dans les transactions monétaires.
De plus, on peut expliquer qu’en général, chaque récepteur contient la référence d’un autre récepteur. Si
un objet ne parvient pas à gérer la demande, il envoie la même chose au destinataire suivant, etc.
24) Expliquez l’avantage du modèle de chaîne de responsabilités et quand
est-il utilisé?
o Cela minimise le couplage.
o Il fournit de la flexibilité tout en assignant les responsabilités aux objets.
o Cela permet à un ensemble de classes d'agir en un. Les événements produits dans une classe
peuvent être envoyés à d'autres classes de gestionnaires à l'aide de la composition.
Utilisation du modèle de chaîne de responsabilité
Il est utilisé dans les cas suivants:
o Lorsque plusieurs objets sont prêts à traiter une demande et que le gestionnaire est inconnu.
o Dans le cas où la collection ou un groupe d'objets pouvant gérer la demande doit être spécifié
dynamiquement.
25) En quoi le Bridge pattern est-il différent du modèle
d'adaptateur(adapter)?
Le motif du modèle Adapter est de rendre similaires les interfaces d'une ou de plusieurs classes.
Le modèle Bridge est conçu pour isoler l'interface d'une classe de son implémentation afin que nous
puissions modifier ou substituer l'implémentation sans changer le code client.
26) Quelle est la différence entre les modèles d'injection de dépendance et
de localisateur de service?
Le localisateur de service est utilisé pour créer des dépendances de classe. La classe est toujours
responsable de la création de ses dépendances, qu’elle utilise le localisateur de service ou non.
Les localisateurs de service sont également utilisés pour masquer les dépendances. Nous ne pouvons pas
dire en regardant un objet s'il se connecte ou non à une base de données lorsqu'il obtient des connexions
à partir d'un localisateur.
Avec l'injection de dépendance, la classe qui contient ses dépendances ne sait ni d'où elles viennent.
Une différence significative est que l’injection de dépendances est beaucoup plus facile à tester car nous
pouvons lui passer des implémentations factices de ses objets dépendants. Nous pourrions combiner les
deux objets et appliquer le localisateur de service.
27) Quels sont les modèles MVC?
Ce modèle est l’un des modèles les plus utilisés de la catégorie de modèles J2EE Design. C'est assez
similaire au concept de Model-View-Controller. L'abréviation MVC provient du concept Model-view-
controller.
Les modèles sont des objets, utilisés comme plans pour tous les objets qui seront utilisés dans
l'application.
Les vues contiennent l'aspect présentation des données et des informations situées dans les modèles.
Les contrôleurs contrôlent à la fois le modèle et la vue car ils servent de lien entre les deux objets. Le
contrôleur joue le rôle d'interface entre View et Model et intercepte également toutes les requêtes
entrantes.
28) Expliquez le modèle de conception du filtre(Filter design pattern)
d'interception et mentionnez également ses avantages?
Le modèle de conception du filtre d'interception est utilisé pour intercepter et manipuler une demande et
une réponse avant et après le traitement de la demande. Les filtres effectuent l'authentification /
autorisation / journalisation ou le suivi de la demande, puis transmettent les demandes aux gestionnaires
correspondants. Examinons quelques entités de base du modèle de conception d'interception.
Filtre
Il effectue une certaine tâche avant ou après l'exécution de requête par gestionnaire de requêtes.
Chaîne de filtrage (Filter Chain)
Il contient plusieurs filtres et permet de les exécuter dans un ordre défini sur la cible.
Target
L'objet cible est le gestionnaire de demandes
Gestionnaire de filtres (Filter Manager)
Il gère les filtres et la chaîne de filtres.
Client
L'objet client est celui qui envoie une demande à l'objet cible.
Avantages du modèle de conception de filtre d'interception
o La configuration du filtre permet un contrôle central avec des gestionnaires peu couplés.
o Cela augmente la réutilisabilité.
o Le nouveau filtre peut être ajouté à tout moment sans affecter le code du client.
o Les filtres peuvent être sélectionnés dynamiquement pendant l'exécution du programme.
29) Expliquez le modèle DAO (Data Access Object)?
Le modèle d'objet d'accès aux données est utilisé pour isoler les données de bas niveau qui accèdent à
l'API ou aux actions des services métier de haut niveau. Vous trouverez ci-dessous les composants du
modèle DAO.
Data Access Object Interface
L’interface DAO décrit les actions standard à effectuer sur un ou plusieurs objets de modèle.
Data Access Object concrete class
Cette classe implémente une interface DAO. Cette classe est responsable de l'obtention des données
d'une source de données qui peut être XML / base de données ou tout autre mécanisme de stockage.
Model Object or Value Object
Cet objet est un vieil objet brut contenant des méthodes get / set pour stocker les données extraites à
l'aide de la classe DAO.
30) Mentionnez quelle est la différence entre VO et JDO?
La différence entre VO et JDO réside dans le fait que JDO est une technologie persistante qui fait
concurrence aux beans entity. Cela permet de créer des POJO (objets java anciens) et de les persévérer
dans la base de données.
Alors que VO (objets de valeur) représente un modèle de conception abstrait, utilisé conjointement avec
les beans entity, JDBC et JDO.