---
title: "Design Patterns (Gang of Four) - José DA COSTA"
description: "Implémenter les design patterns du Gang of Four (créationnels, structurels, comportementaux) pour résoudre des problèmes de conception récurrents et construire des logiciels orientés objet flexibles et réutilisables."
locale: "fr"
canonical: "https://portfolio.josedacosta.info/fr/competences/design-patterns-gof"
source: "https://portfolio.josedacosta.info/fr/competences/design-patterns-gof.md"
html_source: "https://portfolio.josedacosta.info/fr/competences/design-patterns-gof"
author: "José DA COSTA"
type: "skill"
slug: "design-patterns-gof"
generated_at: "2026-04-23T15:42:37.286Z"
---

# Design Patterns (Gang of Four)

**Compétence technique** - master-software-engineering (Master) - Expert

## Description de la compétence

Implémenter les design patterns du Gang of Four (créationnels, structurels, comportementaux) pour résoudre des problèmes de conception récurrents et construire des logiciels orientés objet flexibles et réutilisables.

## Confiance personnelle

**Expert** - 5/5

Scale: 1. Fondamental · 2. En développement · 3. Opérationnel · 4. Avancé · 5. Expert

Cela reflète ma confiance personnelle dans l'application de cette compétence en situation professionnelle réelle, fondée sur l'expérience pratique, l'apprentissage continu et les résultats concrets obtenus.

## Details

- Domain: Hard skill (technical)
- Source: master-software-engineering (Master)
- Confidence level: 5/5 (Expert)
- Category: architecture

## Progression à travers les parcours

Cette compétence a été développée dans 3 parcours différents.

- **2009** - [Software Engineer · développeur PHP Zend Framework](https://portfolio.josedacosta.info/fr/parcours/european-sourcing-engineer.md) (experience) - Confidence: 2/5
- **2013** - [Senior Software Engineer · lead développeur PHP Symfony](https://portfolio.josedacosta.info/fr/parcours/medialeads-senior-engineer.md) (experience) - Confidence: 3/5
- **2023** - [master-software-engineering](https://portfolio.josedacosta.info/fr/parcours/master-software-engineering.md) (education) - Confidence: 5/5

## Related curriculum topics

- **Droit des contrats informatiques** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Le contrat de fourniture en mode SAAS
- **UX et Wireframing** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Qu'est-ce que l'UX design, La gestion de projet UX design, Spécificités du design mobile, Le responsive design et les aspects techniques
- **Design Thinking** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Définition et origines du Design Thinking, La philosophie et l'approche Design Thinking, Pourquoi et comment cadrer un atelier Design Thinking
- **Méthodes Agiles avancées / Scrum** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): Design Sprint
- **Design Pattern en Java** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction Design Pattern du GoF, la légende, Description des Design Pattern de création, Description du Design Pattern Singleton, Description du Design Pattern Factory Method, Description du Design Pattern Abstract Factory, Description des Design Pattern de structure, Description du Design Pattern Proxy, Description du Design Pattern Composite, Description du Design Pattern Adapter, Description du Design Pattern Facade, Description du Design Pattern Decorator, Description des Design Pattern de comportement, Description du Design Pattern Observer, Description du Design Pattern Strategy, Description du Design Pattern Iterator, Description du Design Pattern Interpreter, Description du Design Pattern Chain of Responsibility, Les autres Design Pattern Exemple Composite Specification, Implémentation du Design Pattern Composite Specification
- **Sécurité des applications web** (Bloc 4 - Conception avancée de l'architecture du logiciel): Recommandation A04-2021 : insecure design

## Broader curriculum context

Other modules from the same training program that provide complementary context:

- **Analyse fonctionnelle d'un projet SI** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Introduction - Définition, Les types d'analyses fonctionnelles, Le cahier des charges fonctionnelles, Les étapes de l'AF, L'analyse du besoin
- **Initier efficacement un projet SI** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Qu'est-ce qu'un projet SI ?, Typologie de projet SI, Projets et produits, Rôle du MOE, Rôle du MOA
- **Management transversal** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): La transversalité dans l'entreprise, Management transversal vs hiérarchique, Se positionner dans un rôle transversal, Les 3 leviers du management transversal, Piloter l'activité
- **Animer et encadrer une équipe** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Les fondamentaux du management, Intégration du manager, Recrutement, Intégration d'un collaborateur, Les quatre styles de management
- **Exécuter et piloter la réalisation d'un projet Génie logiciel** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): À quoi sert le management de projet ?, Différences entre projets et opérations, Découvrir le contexte du projet, Définir le périmètre du projet, Établir la charte projet
- **Leadership et Management** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): Qu'est-ce que le management ?, Les missions-clés du manager, Qu'est-ce que le leadership ?, Plusieurs styles de leadership, Commencer par (mieux) se connaître
- **Communiquer en mode projet** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): Qu'est-ce qu'un projet ?, Définir la communication, Les différents types de communication, À quelles étapes du projet communiquer, Pourquoi communiquer dans un projet
- **Javascript : initiation et programmation orientée objet** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Le langage du web, Environnement de travail, Les variables, Les opérateurs, Les structures conditionnelles
- **Javascript : programmation événementielle et asynchrone** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): JavaScript et le DOM, L'objet global window, Sélectionner des éléments, Créer et supprimer des éléments, Gérer les règles CSS
- **Développer vos applications web avec TypeScript** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Introduction à TypeScript, Installer TypeScript et le configurer, Les types fondamentaux, Les types Tuples, Les types Object et Array
- **Fondamentaux du développement Front-end avec Angular** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Il était une fois.. Angular !, Installation, Édition de notre application, Introduction aux composants, Création d'un composant
- **Approfondissement du développement Front-end avec Angular** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Introduction, Mise en place du projet de base, Les routes, Navigation, Passer des paramètres aux routes
- **Maîtriser Java SE** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Présentation et historique du microcosme Java, Présentation et installation du JDK 17, Présentation et installation d'Eclipse 2022-12, Première classe, la classe HelloWorld, Les types primitifs, les objets et les tableaux
- **Développer en Java avec Spring et Hibernate** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Présentation de Jakarta EE et de Spring, Présentation de jakarta persistence et hibernate, Les projets de spring, Présentation du projet avis, Les modèles en couche de spring et la notion de stéréotype
- **Git avancé - GitHub et GitLab** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Quelques rappels sur GIT, Ponctionner un commit (cherry-pick), Retrouver des commits disparus (reflog), Ajouter des notes, Importer un dépôt SVN
- **Maîtriser Docker et le DevOps** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Qu'est-ce que le DevOps ?, Introduction à Docker, Installer Docker, Gestion des images Docker, Lancement et gestion des conteneurs
- **Déploiement d'une application** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Le déploiement dans le cycle de vie d'une application, Le diagramme UML de déploiement, Le diagramme UML de composants, Typologie des hébergements classiques, Typologie des hébergements Cloud
- **Kubernetes pour orchestrer ses conteneurs** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Introduction, Docker, les bases, Volumes, Dockerfile et Registry, Docker les bases : démonstration, Docker Compose
- **Maîtriser le langage Kotlin** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Présentation, HelloWorld, Les différents typages, Optimiser son IDE, Fonction et fonction expression
- **Développer des applications mobiles Android en Kotlin** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Présentation, HelloWorld, Maîtriser l'architecture du projet, Créer une interface graphique, Internationaliser son application
- **Construire une API REST avec Spring Boot** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): C'est quoi une API REST ?, Présentation de spring boot, Modéliser son API avec draw.io, Mettre en place son environnement de travail, Découvrir l'arborescence et démarrer l'application
- **Principes SOLID en JAVA** (Bloc 4 - Conception avancée de l'architecture du logiciel): La problématique de la qualité du code, Les principes Solid, une réponse aux enjeux d'un code maintenable, S : Single Responsability Principle Introduction, Non-respect du Single Responsability Principle, Respect du Single Responsability Principle
- **Architecture logicielle** (Bloc 4 - Conception avancée de l'architecture du logiciel): La nécessité de l'architecture logicielle, Panorama des architectures logicielles, Introduction à l'architecture monolithique, Cas d'usage de l'architecture monolithique, Mise en œuvre de l'architecture monolithique en Java
- **Conception d'application complexe avec UML** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction à la modélisation structurelle avec UML, Le diagramme de classe (classe et héritage), Le diagramme de classe avec Visual Paradigm, Traduction du diagramme de classe en code(classe et héritage), Le diagramme de classe (relation et multiplicité)
- **Algorithmie avancée** (Bloc 4 - Conception avancée de l'architecture du logiciel): Optimiser, par où commencer ?, Rechercher, une tâche complexe ?, Améliorer la recherche avec un tri, Complexité du tri, Amélioration du tri dans le meilleur cas
- **Programmation fonctionnelle en Scala** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction à la programmation fonctionnelle, Règles et lois sur les fonctions, Introduction à Scala, Installation d'IntelliJ IDEA / Utilisation de SBT, Un aperçu de Scala
- **Architecture distribuée et Big Data** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction au big data, Architecture distribuée, Implications business du big data et de l'architecture distribuée, Système de gestion de bases de données, NoSQL
- **NoSQL** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction au stockage, Le modèle relationnel, Les bases du relationnel, OLAP vs OLTP, Agrégations, transactions et optimiseur
- **Structure des données** (Bloc 4 - Conception avancée de l'architecture du logiciel): La bonne structure, Que contient un graphe ?, Graphe orienté et graphe non orienté, Graphe pondéré, Structure de données graphe
- **Plans de tests d'une application** (Bloc 4 - Conception avancée de l'architecture du logiciel): Objectifs d'un plan de tests, Contenu d'un plan de tests, Création d'un cas de test, Typologie et hiérarchie des tests automatisés, Les bases d'un test unitaire
- **Introduction au Machine Learning** (Bloc 4 - Conception avancée de l'architecture du logiciel): Le Machine Learning en pleine expansion, Découvrir les concepts du machine learning, Appréhender l'apprentissage supervisé, Visualiser le cycle de vie d'un projet de Machine Learning, Mettre en place son environnement de travail
- **Anglais commercial** (Bloc 5 - Préparation à votre niveau d'anglais): Dépasser les fausses croyances courantes dans l'apprentissage de l'anglais, Comment gérer les interactions professionnelles de base, Comment utiliser le vocabulaire commun à l'anglais et au français dans les interactions professionnelles, Identifier et éviter les pièges les plus courants dans la communication professionnelle en anglais, Comment créer le cadre pour augmenter votre aisance dans les situations professionnelles
- **Anglais Commercial Niveau Avancé** (Bloc 5 - Préparation à votre niveau d'anglais): Vocabulary Expansion for Professional Contexts, Speaking Skills for Business Meetings and Présentations, Writing Skills for Business Emails and Reports, Business Negotiations, Professional Présentations and Public Speaking
- **Anglais Commercial Niveau Intermédiaire** (Bloc 5 - Préparation à votre niveau d'anglais): Professional English Communication in Sales, Professional English Communication in Sales, Communication via Phone and Email, Managing Misunderstandings and Expressing Disagreement in English Conversations, Differences between French and Anglo-Saxon Cultures
- **Anglais : préparation au TOEIC** (Bloc 5 - Préparation à votre niveau d'anglais): Introduction au TOEIC®, Les types de TOEIC®, Focus sur le TOEIC® : listening and reading, Le nouveau TOEIC®, Comment se préparer
- **Anglais des Ressources Humaines** (Bloc 6 - Modules de mise à niveau préparatoire et de renforcement): Se présenter et présenter son poste, Métiers des RH en entreprise, Comprendre et utiliser les codes professionnels de communication (hiérarchie, distance, formel-informel), Collecter les besoins et adapter une fiche de poste à un recrutement international, Rédiger une offre d'emploi en anglais claire et attractive

## Autres compétences techniques du même diplôme

- [Patterns d'architecture logicielle](https://portfolio.josedacosta.info/fr/competences/software-architecture-patterns.md) - Concevoir des systèmes logiciels évolutifs en utilisant des patterns architecturaux tels que l'architecture en couches, l'architecture hexagonale, les
- [Principes SOLID et code propre](https://portfolio.josedacosta.info/fr/competences/solid-principles-clean-code.md) - Appliquer les principes SOLID (responsabilité unique, ouvert/fermé, substitution de Liskov, ségrégation des interfaces, inversion de dépendances) et l
- [Stratégie de tests et qualité logicielle](https://portfolio.josedacosta.info/fr/competences/testing-strategy-quality.md) - Définir et exécuter des stratégies de tests complètes incluant les tests unitaires, les tests d'intégration, les tests de bout en bout, les pratiques
- [Sécurité des applications web (OWASP)](https://portfolio.josedacosta.info/fr/competences/web-application-security-owasp.md) - Sécuriser les applications web en appliquant les recommandations OWASP Top 10, en implémentant l'authentification/autorisation, en prévenant les attaq
- [Programmation JavaScript (POO, événementiel, asynchrone)](https://portfolio.josedacosta.info/fr/competences/javascript-programming.md) - Maîtriser les paradigmes de programmation JavaScript incluant la programmation orientée objet, l'architecture événementielle, les patterns asynchrones
- [Développement TypeScript](https://portfolio.josedacosta.info/fr/competences/typescript-development.md) - Développer des applications type-safe avec TypeScript en exploitant les systèmes de types avancés, les génériques, les décorateurs, les interfaces et
- [Programmation Java SE](https://portfolio.josedacosta.info/fr/competences/java-se-programming.md) - Programmer des applications robustes en Java SE en maîtrisant les concepts fondamentaux tels que les collections, les génériques, les streams, le mult
- [Java Spring et Hibernate](https://portfolio.josedacosta.info/fr/competences/java-spring-hibernate.md) - Développer des applications d'entreprise avec le framework Spring (Boot, MVC, Security, Data) et Hibernate ORM pour la persistance des données, la ges
- [Conception et implémentation d'API REST](https://portfolio.josedacosta.info/fr/competences/rest-api-design.md) - Concevoir et implémenter des API RESTful selon les bonnes pratiques incluant la modélisation des ressources, les méthodes HTTP, les codes de statut, l
- [Docker et pratiques DevOps](https://portfolio.josedacosta.info/fr/competences/devops-cicd.md) - Conteneuriser les applications avec Docker, créer des images optimisées, gérer des environnements multi-conteneurs avec Docker Compose et intégrer les

## Acquired during: Master Expert en Ingénierie du Logiciel

Master Expert en Ingénierie du Logiciel à l'ESIEA (2023-2026). Diplôme de niveau RNCP 7, spécialisation en génie logiciel et architecture.

[See full journey entry](https://portfolio.josedacosta.info/fr/parcours/master-software-engineering.md)

Full interactive page with navigation: https://portfolio.josedacosta.info/fr/competences/design-patterns-gof
