Maison >développement back-end >tutoriel php >Stratégie de réutilisation du code des modèles de conception PHP

Stratégie de réutilisation du code des modèles de conception PHP

王林
王林original
2024-05-07 13:45:01745parcourir

Les stratégies de réutilisation du code PHP incluent : Héritage : les sous-classes héritent des propriétés et des méthodes de la classe parent. Composition : une classe contient des instances d'autres classes ou objets. Classe abstraite : fournit une implémentation partielle et définit les méthodes à implémenter. Interface : définit les méthodes, pas besoin de les implémenter.

PHP 设计模式代码复用策略

Modèles de conception PHP : stratégie de réutilisation du code

Introduction

La réutilisation du code est un principe important dans le développement de logiciels, qui peut réduire la quantité de duplication de code, améliorer l'efficacité du développement et la maintenabilité du code. PHP fournit une variété de stratégies pour réaliser la réutilisation du code, dont les plus couramment utilisées incluent : un Bibliothèque de classes d'animaux

  • Pour illustrer ces stratégies, prenons comme exemple la création d'une bibliothèque de classes d'animaux.
  • Héritage
  • L'héritage permet aux sous-classes d'hériter des propriétés et des méthodes de la classe parent. Par exemple, nous pourrions créer une classe Mammal, héritant de la classe Animal :
  • class Animal {
        protected $name;
    
        public function __construct($name) {
            $this->name = $name;
        }
    
        public function getName() {
            return $this->name;
        }
    }
    
    class Mammal extends Animal {
        protected $numLegs;
    
        public function __construct($name, $numLegs) {
            parent::__construct($name);
            $this->numLegs = $numLegs;
        }
    
        public function getNumLegs() {
            return $this->numLegs;
        }
    }
  • Composition
  • Composition permet à une classe de contenir des instances d'autres classes ou objets. Par exemple, nous pouvons créer une classe d'animaux parlants en combinant la classe animale et l'interface parlante :
    interface Speakable {
        public function speak();
    }
    
    class TalkingAnimal {
        protected $animal;
        protected $speakable;
    
        public function __construct(Animal $animal, Speakable $speakable) {
            $this->animal = $animal;
            $this->speakable = $speakable;
        }
    
        public function speak() {
            $this->speakable->speak();
        }
    }
  • Classe abstraite

Les classes abstraites ne fournissent qu'une implémentation partielle et définissent des méthodes que les sous-classes doivent implémenter. Par exemple, nous pouvons créer une classe animale abstraite qui contient des méthodes communes et nécessiter des sous-classes pour implémenter des méthodes spécifiques :

abstract class AbstractAnimal {
    protected $name;

    public function getName() {
        return $this->name;
    }

    abstract public function move();
}

class Dog extends AbstractAnimal {
    protected $numLegs;

    public function __construct($name, $numLegs) {
        $this->name = $name;
        $this->numLegs = $numLegs;
    }

    public function move() {
        echo "The dog runs on $this->numLegs legs.";
    }
}

Interface

Une interface définit un ensemble de méthodes, mais ne nécessite pas d'implémentation. Cela permet aux classes de fournir un comportement spécifique en implémentant des interfaces. Par exemple, on peut créer une interface amovible :

interface Movable {
    public function move();
}

class Dog implements Movable {
    // Implement the move method
}

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!

Déclaration:
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