{"id":24385614,"url":"https://github.com/elazzouzihassan/bridge-design-pattern","last_synced_at":"2026-07-14T03:32:09.430Z","repository":{"id":272806392,"uuid":"913910029","full_name":"ElazzouziHassan/bridge-design-pattern","owner":"ElazzouziHassan","description":"Ce projet implémente le design pattern Bridge en Java à travers un cas pratique : un système de contrôle d’appareils électroniques (TV, Radio) à l’aide de télécommandes (Simple et Avancée).","archived":false,"fork":false,"pushed_at":"2025-01-16T17:53:04.000Z","size":218,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-14T19:27:40.750Z","etag":null,"topics":["bridge","design-pattern","design-patterns","designpatterns","java","java8","pont"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ElazzouziHassan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-08T15:31:20.000Z","updated_at":"2025-01-31T20:57:38.000Z","dependencies_parsed_at":"2025-01-16T19:09:31.157Z","dependency_job_id":"c2c6ee5b-7e65-4b4b-bc1f-af8d9afc0a61","html_url":"https://github.com/ElazzouziHassan/bridge-design-pattern","commit_stats":null,"previous_names":["elazzouzihassan/bridge-design-pattern"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ElazzouziHassan/bridge-design-pattern","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElazzouziHassan%2Fbridge-design-pattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElazzouziHassan%2Fbridge-design-pattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElazzouziHassan%2Fbridge-design-pattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElazzouziHassan%2Fbridge-design-pattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ElazzouziHassan","download_url":"https://codeload.github.com/ElazzouziHassan/bridge-design-pattern/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElazzouziHassan%2Fbridge-design-pattern/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280768881,"owners_count":26387532,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bridge","design-pattern","design-patterns","designpatterns","java","java8","pont"],"created_at":"2025-01-19T11:19:39.104Z","updated_at":"2025-10-24T08:48:47.862Z","avatar_url":"https://github.com/ElazzouziHassan.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Design Pattern Bridge - TV, Radio et Télécommandes\r\n\r\nCe projet illustre l'utilisation du **design pattern Bridge** en Java à travers un système de contrôle d'appareils électroniques.  \r\nIl démontre comment séparer l'abstraction (les télécommandes) de l'implémentation (les appareils), garantissant une meilleure extensibilité et réduction du couplage.\r\n\r\n## 📚 Présentation\r\n\r\n### **Qu'est-ce que le Design Pattern Bridge ?**\r\nLe pattern Bridge est un patron de conception structurel qui permet de découpler une abstraction de son implémentation, afin qu'elles puissent évoluer indépendamment.  \r\n\r\nDans ce projet :\r\n- Les **télécommandes** (abstraction) contrôlent différents **appareils** (implémentation).\r\n- Vous pouvez ajouter facilement une nouvelle télécommande ou un nouvel appareil sans modifier le code existant.\r\n\r\n---\r\n\r\n## ⚙️ Structure du Projet\r\n\r\n### **Classes principales :**\r\n\r\n1. **Interface `Device`** :  \r\n   Déclare les fonctionnalités de base pour tout appareil électronique.  \r\n\r\n2. **Implémentations concrètes :**  \r\n   - `TV` : Représente un téléviseur.  \r\n   - `Radio` : Représente une radio.  \r\n\r\n3. **Classe abstraite `RemoteControl` (Abstraction)** :  \r\n   Définit les fonctionnalités de base pour une télécommande, telles que l'allumage/extinction d'un appareil.  \r\n\r\n4. **Abstractions concrètes :**  \r\n   - `SimpleRemoteControl` : Une télécommande basique (allumer/éteindre uniquement).  \r\n   - `AdvancedRemoteControl` : Une télécommande avancée (allumer/éteindre + réglage du volume).  \r\n\r\n---\r\n\r\n## 💻 Fonctionnalités\r\n\r\n1. Contrôler des appareils (TV, Radio) avec des télécommandes différentes (Simple et Avancée).\r\n2. Ajouter facilement de nouveaux appareils ou télécommandes sans impacter les classes existantes.\r\n3. Réduction du couplage grâce à l'utilisation d'interfaces et d'abstractions.\r\n\r\n---\r\n\r\n## 🛠️ Installation et Exécution\r\n\r\n### **Pré-requis :**\r\n- **Java JDK 8** ou supérieur.\r\n- Un IDE ou éditeur de texte compatible avec Java (IntelliJ, Eclipse, VS Code, etc.).\r\n\r\n### **Étapes :**\r\n\r\n1. Clonez le dépôt GitHub :\r\n  ```bash\r\n   git clone https://github.com/ElazzouziHassan/bridge-design-pattern.git\r\n  ```\r\n2. Importez le projet dans votre IDE préféré.\r\n\r\n3. Exécutez la classe principale Main :\r\n  La classe démontrera comment les télécommandes interagissent avec les appareils.\r\n\r\n## 📁 Organisation des Fichiers\r\n\r\n```xml\r\n    src/\r\n  ├── Main.java                  # Classe principale pour tester le projet\r\n  ├── IDevice.java                # Interface pour les appareils électroniques\r\n  ├── TV.java                    # Implémentation concrète : Téléviseur\r\n  ├── Radio.java                 # Implémentation concrète : Radio\r\n  ├── RemoteControl.java         # Abstraction pour les télécommandes\r\n  ├── SimpleRemoteControl.java   # Télécommande basique\r\n  ├── AdvancedRemoteControl.java # Télécommande avancée\r\n```\r\n\r\n## 🎨 Diagramme UML\r\n\r\nUn diagramme UML complet est inclus dans la présentation PowerPoint et dans le dépôt GitHub pour mieux comprendre les relations entre les classes.\r\n\r\n![Diagramme UML](./public/uml-diagramme.png)\r\n\r\n---\r\n## 🔄 Contributions\r\nLes contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request pour améliorer le projet.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felazzouzihassan%2Fbridge-design-pattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felazzouzihassan%2Fbridge-design-pattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felazzouzihassan%2Fbridge-design-pattern/lists"}