Maison > développement back-end > tutoriel php > Modèles de conception courants pour la programmation orientée objet utilisant PHP

Modèles de conception courants pour la programmation orientée objet utilisant PHP

PHPz
Libérer: 2023-06-22 11:36:02
original
782 Les gens l'ont consulté

En tant que langage de programmation largement utilisé, PHP peut être facilement utilisé pour implémenter la programmation orientée objet (POO). Lors du développement à l’aide de la POO, un programmeur doit avoir une compréhension approfondie du concept de modèles de conception. Les modèles de conception font référence à des solutions générales à certains types de problèmes dans des circonstances spécifiques. Cet article présentera donc plusieurs modèles de conception courants implémentés à l’aide de PHP.

  1. Modèle Singleton

Dans le modèle singleton, une classe n'a qu'une seule instance. Lorsque la création répétée d'instances entraîne dans certains cas une consommation de performances du programme et que chaque instance peut appliquer différents états dans des conditions concurrentes, le mode singleton doit alors être utilisé.

Ce qui suit est un exemple de code pour le modèle singleton :

class Singleton {
    private static $instance;

    private function __construct() {}

    public static function getInstance() {
        if (!isset(self::$instance)) {
            self::$instance = new singleton();
        }
        return self::$instance;
    }
}
Copier après la connexion

Dans le code ci-dessus, la fonction getInstance créera un singleton et garantira qu'il ne peut y avoir qu'une seule instance de la classe dans l'application. . getInstance 函数将创建一个单例,并确保在应用程序中只能有一个类实例。

  1. 工厂模式(Factory Pattern)

工厂模式是将对象的创建过程封装在一个工厂类中,使得工厂类和具体类分离,减少耦合度。在工厂模式中,一个工厂类可以创建多个类别的实例。

下面是工厂模式的示例代码:

interface Shape {
    public function draw();
}

class Circle implements Shape {
    public function draw() {
        echo "Circle
";
    }
}

class Rectangle implements Shape {
    public function draw() {
        echo "Rectangle
";
    }
}

class ShapeFactory {
    public function createShape($type) {
        if ($type == 'circle') {
            return new Circle();
        } else if ($type == 'rectangle') {
            return new Rectangle();
        }
    }
}

$shapeFactory = new ShapeFactory();
$circle = $shapeFactory->createShape('circle');
$rectangle = $shapeFactory->createShape('rectangle');

$circle->draw(); //output: Circle
$rectangle->draw(); //output: Rectangle
Copier après la connexion
  1. 观察者模式(Observer Pattern)

观察者模式是在一个对象被修改时自动通知其他对象的一种模式。在观察者模式中,一个被观察的对象可以有多个观察者,当状态改变时,这些观察者会收到通知并自动更新。

以下是观察者模式的示例代码:

interface Subject {
    public function attach(Observer $observer);
    public function detach(Observer $observer);
    public function notify();
}

class ConcreteSubject implements 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();
        }
    }
}

interface Observer {
    public function update();
}

class ConcreteObserver implements Observer {
    public function update() {
        echo "Updated!
";
    }
}

$subject = new ConcreteSubject();
$observer1 = new ConcreteObserver();
$observer2 = new ConcreteObserver();

$subject->attach($observer1);
$subject->attach($observer2);

$subject->notify(); //output: Updated! Updated!

$subject->detach($observer2);

$subject->notify(); //output: Updated!
Copier après la connexion

在上述代码中, SubjectObserver 都是接口,主要用于固定观察者模式的结构, ConcreteSubject 是一个具体类,用于被观察, ConcreteObserver

    Factory Pattern

    🎜Le modèle d'usine encapsule le processus de création d'objet dans une classe d'usine, qui sépare la classe d'usine de la classe concrète et réduit le couplage. Dans le modèle d'usine, une classe d'usine peut créer des instances de plusieurs catégories. 🎜🎜Ce qui suit est un exemple de code pour le modèle d'usine : 🎜rrreee
      🎜Modèle d'observateur 🎜🎜🎜Le modèle d'observateur est un modèle qui avertit automatiquement les autres objets lorsqu'un objet est modifié. Dans le modèle d'observateur, un objet observé peut avoir plusieurs observateurs. Lorsque l'état change, ces observateurs recevront des notifications et seront automatiquement mis à jour. 🎜🎜Ce qui suit est un exemple de code pour le modèle d'observateur : 🎜rrreee🎜Dans le code ci-dessus, Subject et Observer sont tous deux des interfaces, principalement utilisées pour corriger la structure du modèle d'observateur. ConcreteSubject est une classe concrète utilisée pour être observée, et ConcreteObserver est une classe d'observateur concrète. 🎜🎜En PHP, les modèles de conception peuvent être utilisés de manière très flexible. Les trois modèles de conception ci-dessus ne sont que quelques exemples de modèles de conception courants mis en œuvre à l'aide de PHP. Les programmeurs doivent comprendre en profondeur le concept de modèles de conception dans le développement réel, afin de sélectionner les modèles appropriés et de les appliquer aux programmes pour résoudre les problèmes réels. 🎜

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:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal