Maison > développement back-end > tutoriel php > Modèles de conception PHP : relation avec la programmation comportementale

Modèles de conception PHP : relation avec la programmation comportementale

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-06-04 22:33:59
original
1059 Les gens l'ont consulté

Les modèles de conception PHP mettent en œuvre des principes de programmation comportementale pour créer du code reproductible et faiblement couplé grâce à des comportements bien définis. Les modèles spécifiques incluent : Modèle observateur : définit une relation abonnement-publication pour faciliter la surveillance des objets et la réponse aux événements. Mode stratégie : permet de basculer entre différents algorithmes et d'effectuer différentes opérations selon les besoins. Mode commande : encapsulez les requêtes dans des objets et exécutez-les de manière paramétrée.

Modèles de conception PHP : relation avec la programmation comportementale

Modèles de conception PHP : relation avec la programmation comportementale

La programmation comportementale crée du code répétable et faiblement couplé en définissant des comportements bien définis. PHP fournit de nombreux modèles de conception pour la programmation comportementale, explorons-les.

Modèle Observateur

Le modèle Observer définit une relation d'abonnement-publication dans laquelle un objet (sujet) peut émettre des notifications et d'autres objets (observateurs) peuvent les écouter.

interface Observer {
    public function update($subject);
}

class ConcreteObserver1 implements Observer {
    public function update($subject) {
        echo "ConcreteObserver1 received update from $subject\n";
    }
}

class ConcreteObserver2 implements Observer {
    public function update($subject) {
        echo "ConcreteObserver2 received update from $subject\n";
    }
}

class Subject {
    private $observers = [];

    public function attach(Observer $observer) {
        $this->observers[] = $observer;
    }

    public function detach(Observer $observer) {
        $key = array_search($observer, $this->observers);
        if ($key !== false) {
            unset($this->observers[$key]);
        }
    }

    public function notify() {
        foreach ($this->observers as $observer) {
            $observer->update($this);
        }
    }
}

// 实战案例
$subject = new Subject();
$observer1 = new ConcreteObserver1();
$observer2 = new ConcreteObserver2();
$subject->attach($observer1);
$subject->attach($observer2);
$subject->notify(); // 输出:"ConcreteObserver1 received update from Subject" 和 "ConcreteObserver2 received update from Subject"
Copier après la connexion

Mode Stratégie

Le Mode Stratégie vous permet de basculer entre différents algorithmes selon vos besoins.

interface Strategy {
    public function doOperation($a, $b);
}

class ConcreteStrategyA implements Strategy {
    public function doOperation($a, $b) {
        return $a + $b;
    }
}

class ConcreteStrategyB implements Strategy {
    public function doOperation($a, $b) {
        return $a - $b;
    }
}

class Context {
    private $strategy;

    public function __construct(Strategy $strategy) {
        $this->strategy = $strategy;
    }

    public function doOperation($a, $b) {
        return $this->strategy->doOperation($a, $b);
    }
}

// 实战案例
$context = new Context(new ConcreteStrategyA());
echo $context->doOperation(10, 5); // 输出:15

$context = new Context(new ConcreteStrategyB());
echo $context->doOperation(10, 5); // 输出:5
Copier après la connexion

Command Pattern

Le modèle de commande encapsule les requêtes dans des objets, vous permettant de les exécuter de manière paramétrée.

interface Command {
    public function execute();
}

class ConcreteCommand implements Command {
    private $receiver;

    public function __construct($receiver) {
        $this->receiver = $receiver;
    }

    public function execute() {
        $this->receiver->action();
    }
}

class Receiver {
    public function action() {
        echo "Receiver action executed\n";
    }
}

class Invoker {
    private $commands = [];

    public function setCommand(Command $command) {
        $this->commands[] = $command;
    }

    public function invoke() {
        foreach ($this->commands as $command) {
            $command->execute();
        }
    }
}

// 实战案例
$receiver = new Receiver();
$command = new ConcreteCommand($receiver);
$invoker = new Invoker();
$invoker->setCommand($command);
$invoker->invoke(); // 输出:"Receiver action executed"
Copier après la connexion

En utilisant des modèles de conception comportementale en PHP, vous pouvez créer un code réutilisable, maintenable et flexible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal