Le modèle de politique est un modèle de conception comportementale qui permet la sélection dynamique des politiques algorithmiques lors de l'exécution. En PHP, l'utilisation des modèles de stratégie peut implémenter efficacement le découplage logique et améliorer la flexibilité et la maintenabilité du code. Ce modèle suit le principe de clôture ouverte, c'est-à-dire ouvert aux extensions et fermé aux modifications.
Prenant l'exemple des plates-formes de commerce électronique, les utilisateurs de différents niveaux bénéficient de différentes stratégies de réduction: aucune réduction pour les utilisateurs ordinaires, 10% de réduction pour les utilisateurs VIP et 20% de réduction pour les utilisateurs de SVIP. Grâce au modèle de politique, nous pouvons encapsuler chaque stratégie de tarification en une classe indépendante pour une gestion et une expansion faciles.
abstract class PriceStrategy {
abstract public function calculatePrice($price);
}
Pour différents niveaux d'utilisateurs, créez trois classes héritées de Pricestrategy :
class RegularStrategy extends PriceStrategy {
public function calculatePrice($price) {
return $price;
}
}
class VipStrategy extends PriceStrategy {
public function calculatePrice($price) {
return $price * 0.9;
}
}
class SvipStrategy extends PriceStrategy {
public function calculatePrice($price) {
return $price * 0.8;
}
}
La classe d'ordre réalise le calcul des prix flexibles en définissant des objets de politique:
class Order {
private $priceStrategy;
public function setPriceStrategy(PriceStrategy $strategy) {
$this->priceStrategy = $strategy;
}
public function calculateTotalPrice($price) {
return $this->priceStrategy->calculatePrice($price);
}
}
Nous pouvons sélectionner dynamiquement des classes de stratégie en fonction du niveau de l'utilisateur:
$order = new Order();
$regularStrategy = new RegularStrategy();
$order->setPriceStrategy($regularStrategy);
$regularPrice = $order->calculateTotalPrice(100); // Sortir100
$vipStrategy = new VipStrategy();
$order->setPriceStrategy($vipStrategy);
$vipPrice = $order->calculateTotalPrice(100); // Sortir90
$svipStrategy = new SvipStrategy();
$order->setPriceStrategy($svipStrategy);
$svipPrice = $order->calculateTotalPrice(100); // Sortir80
Grâce au modèle de politique, différentes règles commerciales sont encapsulées en classes indépendantes, ce qui rend la logique principale plus claire et a une bonne évolutivité. Lors de l'ajout d'une nouvelle stratégie de niveau utilisateur, il vous suffit d'ajouter une nouvelle classe de stratégie sans modifier le code existant.
Le modèle de stratégie est un modèle de conception très pratique dans le développement de PHP, et convient particulièrement à la conception du système avec des comportements changeants. En utilisant rationnellement le modèle de stratégie, la structure et la maintenabilité du code peuvent être efficacement améliorées, la complexité du système peut être réduite et l'efficacité de développement peut être améliorée.