PHP设计模式之模板方法模式实例浅析
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-02 11:24:18 浏览: 评论:0
这篇文章主要介绍了PHP设计模式之模板方法模式,结合实例形式简单分析了php设计模式中模板方法模式的概念、原理、定义、使用方法及相关操作注意事项,需要的朋友可以参考下。
本文实例讲述了PHP设计模式之模板方法模式,分享给大家供大家参考,具体如下:
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法模式中会用到抽象模板,它的方法分为两类:
基本方法,也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。
模板方法,可以有一个或多个,一般是一个具体方法,也就是一个框架,实现基本方法的调度,完成固定逻辑。
注意: 为了防止恶意的操作,一般模板方法都加上final关键字,不允许被覆写。
注意: 抽象模板中的基本方法尽量设计为protected类型,符合迪米特法则,不需要暴露的属性或方法尽量不要设置为protected类型。实现类若非必要,尽量不要扩大父类中的访问权限。
模板方法模式的优点
封装不变部分,扩展可变部分。
提取公共部分代码,便于维护。
行为由父类控制,子类实现
示例:
- <?php
- /**
- * 模型方法模式
- */
- abstract class ACar {
- abstract protected function start();
- abstract protected function engineBoom();
- abstract protected function alarm();
- abstract protected function stop();
- public function run() {
- $this->start();
- $this->engineBoom();
- $this->alarm();
- $this->stop();
- }
- }
- final class Benz extends ACar {
- protected function start() {
- echo 'Benz start' . PHP_EOL;
- }
- protected function engineBoom() {
- echo 'Benz engine boom' . PHP_EOL;
- }
- protected function alarm() {
- echo 'Benz alarm' . PHP_EOL;
- }
- protected function stop() {
- echo 'Benz stop' . PHP_EOL;
- }
- }
- final class BMW extends ACar {
- protected function start() {
- echo 'BMW start' . PHP_EOL;
- }
- protected function engineBoom() {
- echo 'BMW engine boom' . PHP_EOL;
- }
- protected function alarm() {
- echo 'BMW alarm' . PHP_EOL;
- }
- protected function stop() {
- echo 'BMW stop' . PHP_EOL;
- }
- // 修改顺序
- public function run() {
- $this->start();
- $this->alarm();
- $this->engineBoom();
- $this->stop();
- }
- }
- class Client {
- public static function run() {
- $benz = new Benz();
- $benz->run();
- $bmw = new BMW();
- $bmw->run();
- }
- }
- Client::run();
运行结果:
Benz start Benz engine boom Benz alarm Benz stop BMW start BMW alarm BMW engine boom BMW stop
Tags: PHP设计模式 PHP模板方法
相关文章
- ·php设计模式是什么,该如何理解(2014-06-10)
- ·php设计模式 建造者模式 与Adapter(适配器模式)(2014-08-02)
- ·PHP设计模式之建造者模式定义与用法简单示例(2018-10-13)
- ·PHP设计模式之委托模式定义与用法简单示例(2018-10-13)
- ·PHP设计模式概述(2020-02-15)
- ·php设计模式之单例模式使用示例(2020-08-29)
- ·php设计模式之命令模式使用示例(2020-10-06)
- ·php基础设计模式大全(注册树模式、工厂模式、单列模式)(2021-06-16)
- ·PHP设计模式之简单投诉页面实例(2021-07-11)
- ·实例讲解PHP设计模式编程中的简单工厂模式(2021-07-12)
- ·PHP设计模式之工厂模式详解(2021-08-16)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)