Table des matières
PHP设计模式——模板模式
Maison développement back-end tutoriel php PHP设计模式——模板模式_PHP教程

PHP设计模式——模板模式_PHP教程

Jul 13, 2016 am 09:51 AM
模式 模板 设计模式

PHP设计模式——模板模式

 

 

模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。

 

UML类图:

\

 

角色:

抽象模板角色(MakePhone):抽象模板类,定义了一个具体的算法流程和一些留给子类必须实现的抽象方法。

具体子类角色(XiaoMi):实现MakePhone中的抽象方法,子类可以有自己独特的实现形式,但是执行流程受MakePhone控制。

核心代码:

 

<!--?php
/**
 * Created by PhpStorm--->
 * User  extends  Jang
 * Date  extends  2015/6/10
 * Time  extends  11  extends 06
 */

//抽象模板类
abstract class MakePhone
{
    protected $name;

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

    public function MakeFlow()
    {
        $this->MakeBattery();
        $this->MakeCamera();
        $this->MakeScreen();
        echo $this->name.手机生产完毕!
Copier après la connexion

; } public abstract function MakeScreen(); public abstract function MakeBattery(); public abstract function MakeCamera(); } //小米手机 class XiaoMi extends MakePhone { public function __construct($name='小米') { parent::__construct($name); } public function MakeBattery() { echo 小米电池生产完毕!
; } public function MakeCamera() { echo 小米相机生产完毕!
; } public function MakeScreen() { echo 小米屏幕生产完毕!
; } } //魅族手机 class FlyMe extends MakePhone { function __construct($name='魅族') { parent::__construct($name); } public function MakeBattery() { echo 魅族电池生产完毕!
; } public function MakeCamera() { echo 魅族相机生产完毕!
; } public function MakeScreen() { echo 魅族屏幕生产完毕!
; } }
调用客户端测试代码:

header(Content-Type:text/html;charset=utf-8);
//-------------------------模板模式---------------------
require_once ./Template/Template.php;
$miui=new XiaoMi();
$flyMe=new FlyMe();

$miui->MakeFlow();
$flyMe->MakeFlow();
Copier après la connexion

 

 

适用场景及优势:

1、完成某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时。我们通常考虑用模板模式来处理。

2、当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现,我们通过模板模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

3、模板模式通过把不变的行为搬移到超级抽象类,去除子类中的重复代码来体现它的优势。模板模式提供了一个很好的代码复用平台。

 

欢迎关注我的视频课程,地址如下,谢谢。

 

PHP面向对象设计模式

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1015543.htmlTechArticlePHP设计模式——模板模式 模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现...
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La différence entre les modèles de conception et les modèles architecturaux dans le framework Java La différence entre les modèles de conception et les modèles architecturaux dans le framework Java Jun 02, 2024 pm 12:59 PM

Dans le framework Java, la différence entre les modèles de conception et les modèles architecturaux réside dans le fait que les modèles de conception définissent des solutions abstraites aux problèmes courants de conception de logiciels, en se concentrant sur l'interaction entre les classes et les objets, tels que les modèles d'usine. Les modèles architecturaux définissent la relation entre les structures et les modules du système, en se concentrant sur l'organisation et l'interaction des composants du système, tels que l'architecture en couches.

Comparaison des modèles C++ et des génériques ? Comparaison des modèles C++ et des génériques ? Jun 04, 2024 pm 04:24 PM

La différence entre les modèles et les génériques en C++ : Modèles : définis au moment de la compilation, clairement typés, haute efficacité et petite taille de code. Génériques : typage à l'exécution, interface abstraite, offre flexibilité, faible efficacité.

Quelles sont les applications courantes des modèles C++ dans le développement réel ? Quelles sont les applications courantes des modèles C++ dans le développement réel ? Jun 05, 2024 pm 05:09 PM

Les modèles C++ sont largement utilisés dans le développement réel, notamment les modèles de classes de conteneurs, les modèles d'algorithmes, les modèles de fonctions génériques et les modèles de métaprogrammation. Par exemple, un algorithme de tri générique peut trier des tableaux de différents types de données.

Modèles de conception PHP : développement piloté par les tests en pratique Modèles de conception PHP : développement piloté par les tests en pratique Jun 03, 2024 pm 02:14 PM

TDD est utilisé pour écrire du code PHP de haute qualité. Les étapes comprennent : l'écriture de cas de test, la description des fonctionnalités attendues et leur échec. Écrivez du code de manière à ce que seuls les cas de test réussissent sans optimisation excessive ni conception détaillée. Une fois les cas de test réussis, optimisez et refactorisez le code pour améliorer la lisibilité, la maintenabilité et l’évolutivité.

Comment fonctionnent les modèles C++ ? Comment fonctionnent les modèles C++ ? Jun 03, 2024 pm 05:34 PM

Les modèles en C++ permettent d'écrire du code réutilisable avec la syntaxe, instancié lorsqu'il est appelé. Les spécialisations de modèles fournissent des implémentations spéciales pour des types spécifiques. En pratique, les modèles peuvent être utilisés pour trier des tableaux de différents types, comme dans l'algorithme de tri par insertion.

Limitations des modèles C++ et comment les contourner ? Limitations des modèles C++ et comment les contourner ? Jun 02, 2024 pm 08:09 PM

Limitations des modèles C++ et comment les contourner : Gonflement de code : les modèles génèrent plusieurs instances de fonctions, qui peuvent être contournées via des optimiseurs, des paramètres de modèle variables et une compilation conditionnelle au moment de la compilation. Temps de compilation long : les modèles sont instanciés au moment de la compilation, ce qui peut éviter de définir des fonctions de modèle dans les fichiers d'en-tête, en les instanciant uniquement lorsque cela est nécessaire et en utilisant la technologie PIMPL pour les éviter. Effacement de type : les modèles effacent les informations de type au moment de la compilation, ce qui peut être contourné grâce à la spécialisation des modèles et aux informations de type à l'exécution (RTTI).

Application des modèles de conception dans le cadre Guice Application des modèles de conception dans le cadre Guice Jun 02, 2024 pm 10:49 PM

Le framework Guice applique un certain nombre de modèles de conception, notamment : Modèle Singleton : garantir qu'une classe n'a qu'une seule instance via l'annotation @Singleton. Modèle de méthode d'usine : créez une méthode d'usine via l'annotation @Provides et obtenez l'instance d'objet lors de l'injection de dépendances. Mode stratégie : encapsulez l'algorithme dans différentes classes de stratégie et spécifiez la stratégie spécifique via l'annotation @Named.

Quels sont les avantages et les inconvénients de l'utilisation de modèles de conception dans le framework Java ? Quels sont les avantages et les inconvénients de l'utilisation de modèles de conception dans le framework Java ? Jun 01, 2024 pm 02:13 PM

Les avantages de l'utilisation de modèles de conception dans les frameworks Java incluent : une lisibilité, une maintenabilité et une évolutivité améliorées du code. Les inconvénients incluent la complexité, la surcharge de performances et la courbe d'apprentissage abrupte due à une utilisation excessive. Cas pratique : Le mode proxy permet de charger des objets paresseusement. Utilisez les modèles de conception à bon escient pour tirer parti de leurs avantages et minimiser leurs inconvénients.

See all articles