Académique Documents
Professionnel Documents
Culture Documents
Modèle de création :
<?php
interface Produit {
class FabriqueProduit {
switch ($type) {
case 'A':
case 'B':
default:
}
// Utilisation de la fabrique pour créer des produits
$produitA = FabriqueProduit::creerProduit('A');
$produitB = FabriqueProduit::creerProduit('B');
?>
b) Singleton :
<?php
class Singleton {
return self::$instance;
}
// Utilisation du singleton
$singleton = Singleton::getInstance();
$singleton->someBusinessLogic();
?>
Explication : Le modèle Singleton permet de garantir qu'une classe ne possède qu'une seule instance
dans toute l'application. Cela peut être utile lorsque vous avez besoin d'une unique ressource
partagée, telle qu'une connexion à une base de données ou un fichier de configuration. La méthode
getInstance() est utilisée pour récupérer l'instance unique de la classe.
a. Adapter :
<?php
interface Notification {
class SMSNotification {
private $smsNotification;
$this->smsNotification = $smsNotification;
}
public function send($message) {
$this->smsNotification->push($message);
$emailNotification->send("Bonjour!");
$smsAdapter->send("Salut!");
?>
Explication : Le modèle Adapter permet de faire collaborer des classes qui ne pourraient pas le faire
autrement en convertissant l'interface d'une classe en une autre interface attendue par le client.
Dans l'exemple ci-dessus, la classe SMSAdapter permet d'utiliser un objet SMSNotification en tant
qu'implémentation de l'interface Notification, de sorte qu'il puisse être utilisé de la même manière
que l'objet EmailNotification.
b. Proxy :
<?php
interface Sujet {
private $sujet;
public function __construct(Sujet $sujet) {
$this->sujet = $sujet;
$this->sujet->action();
$proxy->action();
?>
Explication : Le modèle Proxy permet de contrôler l'accès à un objet en fournissant une interface
similaire. Dans l'exemple ci-dessus, le proxy Proxy enveloppe un objet SujetConcret et ajoute un
comportement supplémentaire avant et après l'exécution de l'action du sujet concret. Cela permet
d'effectuer des tâches supplémentaires, telles que la vérification des autorisations, la mise en cache
ou la journalisation, sans modifier directement l'objet d'origine.