Maison > développement back-end > tutoriel php > Modèles de conception PHP : introduction au modèle PHP Factory (avec code)

Modèles de conception PHP : introduction au modèle PHP Factory (avec code)

不言
Libérer: 2023-04-03 15:54:01
original
1899 Les gens l'ont consulté

Le contenu de cet article concerne les modèles de conception PHP : une introduction au modèle d'usine PHP (avec code). Les amis dans le besoin peuvent s'y référer.

Le modèle d'usine est une méthode qui masque les détails d'instanciation d'une classe et utilise la même méthode d'instanciation pour une série de classes, ce qui peut facilement étendre la manière de créer des objets pour plus de classes implémentant la même interface.
Des exemples de scénarios d'application incluent :
1) Paiement en ligne
Il existe de nombreuses méthodes de paiement, telles que le paiement WeChat, le paiement Alipay, le paiement UnionPay, etc. Le mode de paiement correspondant est adopté en fonction du choix de l'utilisateur 2 ) Statistiques de visites
Dans un projet avec un métier plus complexe, les utilisateurs accèdent à différents objets, comme l'accès aux articles, l'accès aux auteurs, l'accès aux répertoires d'articles, etc. C'est le même enregistrement d'accès, mais les informations enregistrées sont différentes

Le principe du modèle d'usine :

Concevez d'abord une interface basée sur le même comportement de plusieurs objets, puis laissez ces classes implémenter cette interface, puis créez une usine d'instanciation, qui peut être instanciée selon différents paramètres en usine Différents types.

Implémentation spécifique du modèle d'usine :

/*
 *  形状接口
 */interface Shape{
    public function area();}/*
 * 长方形类,实现了形状接口
 */class Rectangle implements Shape{
    private $long;    private $width;    function __construct($long,$width)
    {
        $this->long = $long;        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return $this->long * $this->width;
    }
}/*
 * 正方形类,实现了形状接口
 */class Square implements Shape{
    private $width;    function __construct($width)
    {
        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pow($this->width,2);
    }
}/*
 * 圆形类,实现了形状接口
 */class Circle implements Shape{
    private $radiu;    function __construct($radiu)
    {
        $this->radiu = $radiu;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pi()*pow($this->radiu,2);
    }
}class ShapeFactory{
    /*
     * 获取实例化的形状对象
     * ...$args 表示接受不限个数的参数
     */
    public function getShpae(...$args)
    {
        /*
         * 第一个参数为形状名,后面的参数为形状的尺寸
         */
        switch($args[0])
        {            case 'Rectangle':                return new Rectangle($args[1],$args[2]);            break;            case 'Square':                return new Square($args[1]);            break;            case 'Circle':                return new Circle($args[1]);            break;
        }        return null;
    }
}$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area();
print_r($area);/*
Array
(
    [0] => 6
    [1] => 4
    [2] => 12.566370614359
)
*/
Copier après la connexion
Articles connexes recommandés :

Comment obtenir le répertoire de premier niveau des fichiers en php (code pur)

Comment php utilise-t-il la longitude et la latitude pour calculer la distance entre deux points (code pur)

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