Maison  >  Article  >  développement back-end  >  Programmation fonctionnelle PHP et modèles de conception

Programmation fonctionnelle PHP et modèles de conception

PHPz
PHPzoriginal
2024-05-06 13:33:011031parcourir

La programmation fonctionnelle utilise des valeurs immuables et des applications de fonctions pour améliorer la stabilité du code. Combiné avec des modèles de conception, il crée des applications efficaces et faciles à entretenir. Par exemple, le modèle Strategy utilise une fonction de mappage pour sélectionner un algorithme, et nous avons démontré le tri d'un tableau à l'aide des stratégies Bubble Sort et Quick Sort.

PHP 函数式编程与设计模式

Programmation fonctionnelle PHP et modèles de conception

La programmation fonctionnelle est un paradigme de programmation qui traite le calcul comme l'application de fonctions à des valeurs immuables, plutôt que l'exécution de commandes sur l'état. Cela apporte une plus grande stabilité et maintenabilité au code.

Les modèles de conception sont des structures de code éprouvées et réutilisables qui résolvent des problèmes de programmation courants. La combinaison de programmation fonctionnelle et de modèles de conception vous permet de créer des applications efficaces et faciles à maintenir.

Cas pratique : modèle de stratégie et fonction de cartographie

Le modèle de stratégie permet à une application de sélectionner un algorithme ou une opération sans modifier la structure de l'application. Nous pouvons implémenter le modèle Strategy à l'aide de fonctions de mappage comme suit :

<?php

interface SortStrategy
{
    public function sort(array $data): array;
}

class BubbleSortStrategy implements SortStrategy
{
    public function sort(array $data): array
    {
        for ($i = 0; $i < count($data); $i++) {
            for ($j = $i + 1; $j < count($data); $j++) {
                if ($data[$i] > $data[$j]) {
                    $temp = $data[$i];
                    $data[$i] = $data[$j];
                    $data[$j] = $temp;
                }
            }
        }
        return $data;
    }
}

class QuickSortStrategy implements SortStrategy
{
    public function sort(array $data): array
    {
        if (count($data) <= 1) {
            return $data;
        }

        $pivot = $data[0];
        $left = [];
        $right = [];

        for ($i = 1; $i < count($data); $i++) {
            if ($data[$i] < $pivot) {
                $left[] = $data[$i];
            } else {
                $right[] = $data[$i];
            }
        }

        return array_merge($this->sort($left), [$pivot], $this->sort($right));
    }
}


$data = [5, 3, 1, 2, 4];

$bubbleSortStrategy = new BubbleSortStrategy();
$sortedData = array_map(function ($value) use ($bubbleSortStrategy) {
    return $bubbleSortStrategy->sort($value);
}, [$data]);

echo implode(', ', $sortedData[0]); // Output: 1, 2, 3, 4, 5


$quickSortStrategy = new QuickSortStrategy();
$sortedData = array_map(function ($value) use ($quickSortStrategy) {
    return $quickSortStrategy->sort($value);
}, [$data]);

echo implode(', ', $sortedData[0]); // Output: 1, 2, 3, 4, 5

Dans cet exemple, la fonction array_map agit comme un appelant universel du modèle Strategy. Il parcourt les données et applique la stratégie spécifiée (algorithme de tri) à chaque élément. De cette façon, nous pouvons facilement échanger différents algorithmes de tri selon nos besoins sans avoir à modifier la structure de l'application.

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