浅谈PHP设计模式的建造者模式

yizhihongxing

简介:

建造者模式,又称之为生成器模式,属于创建型的设计模式。将一个复杂对象的构建,与它的表示分离,使得同样的构建过程可以创建不同的表示。

适用场景:

用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的(这就表名可以抽离),但对象的外在面临着复杂的变化。

优点:

创建和表象分离

缺点:

如果核心类内部发生变化,建造者也要相应修改
与工厂模式:
比工厂模式多了一道自行处理的工序

代码:

abstract class TestPaper {
    abstract public function BuildPaper();
    abstract public function BuildQuestion();
}

class ChineseExaminationPaper extends TestPaper {
    public function BuildPaper() {
        echo "使用A4纸";
    }

    public function BuildQuestion() {
        echo "语文题";
    }
}

class EnglishExaminationPaper extends TestPaper {
    public function BuildPaper() {
        echo "使用A6纸";
    }

    public function BuildQuestion() {
        echo "英文题";
    }
}



class ExaminationPaper {
    private $examination_paper;
    function __construct($examination_paper) {
        $this->examination_paper = $examination_paper;
    }

    public function create() {
        $this->examination_paper->BuildPaper();
        $this->examination_paper->BuildQuestion();
    }
}


//客户端代码

$thinDirector = new ExaminationPaper(new ChineseExaminationPaper());
$thinDirector->create();

$fatDirector = new ExaminationPaper(new EnglishExaminationPaper());
$fatDirector->create();

原文链接:https://www.cnblogs.com/phpphp/p/17031616.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈PHP设计模式的建造者模式 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 百度工程师讲PHP函数的实现原理及性能分析(二)

    《百度工程师讲PHP函数的实现原理及性能分析(二)》是一篇介绍PHP函数实现原理和性能分析的技术文章,旨在帮助PHP开发者深入理解函数的工作原理,提高PHP程序的性能。下面是该文章完整攻略。 一、文章概述 本文主要分析PHP函数的实现原理和性能分析,介绍了函数调用栈、函数的参数传递方式、函数的返回值、函数的变量作用域等基础知识。然后详细讲解了PHP函数实现的…

    PHP 2023年5月27日
    00
  • php数组和链表的区别总结

    PHP 数组和链表是两种数据结构,它们都能储存一组数据,但是它们间还是有很大的区别。本文将从以下几个方面总结 PHP 数组和链表的区别: 存储方式 PHP 数组和链表的存储方式是不同的。PHP 数组是一种连续的线性结构,其内部元素的存储是连续的。而链表则是由一系列节点组成,每个节点包含一个存储数据和一个指向下一节点的指针。 访问方式 由于 PHP 数组是连续…

    PHP 2023年5月26日
    00
  • PHP使用redis实现分布式锁的示例详解

    以下是“PHP使用redis实现分布式锁的示例详解”的完整使用攻略,包括分布式锁的概念、实现方法和示例说明等内容。 分布式锁的概念 分布式锁是一种用于分布式中的锁机制,用于控制多个进程或线程对共享资源的访问。分布式锁的主要作用是保证在分布式系统中,同一时刻只有一个进程或线程可以访问共享资源,避免出现数据竞争和并发问题。 分布式锁的实现方法很多种,其中一种常用…

    PHP 2023年5月12日
    00
  • php打印一个边长为N的实心和空心菱型的方法

    针对您提出的问题,我将会给出详细的Markdown格式的解答及示例说明。我们先依次了解实现的步骤。 实现步骤 判断输入的边长是否为奇数,如果不是则输出错误信息并终止程序; 分别使用双层for循环输出实心和空心菱型。 代码示例 //定义边长N的变量 $N = 5; //判断N是否为奇数 if($N % 2 != 1){ echo "输入的数不是奇数,…

    PHP 2023年5月26日
    00
  • php生成zip压缩文件的方法详解

    PHP生成Zip压缩文件的方法详解 生成Zip压缩文件是常见的文件操作之一,本文将介绍如何使用PHP来生成Zip压缩文件,包括如何添加文件、添加目录、压缩文件密码等功能。 1. 下载ZipArchive类 在PHP中,我们可以使用ZipArchive类来处理Zip压缩文件,因此需要先下载并引入ZipArchive类。 <?php $zip = new …

    PHP 2023年5月26日
    00
  • PHP 面向对象程序设计之类属性与类常量实现方法分析

    首先,我们需要定义什么是类属性和类常量。类属性是指定义在类中,而不是在方法中的变量;而类常量则是指在类中定义的不变的常量,在整个类中都可使用。 为了实现类属性和类常量,我们需要使用关键字 static: 定义类属性和使用 在类中定义类属性时,在属性名前面加上 static 关键字即可。类属性是全局的,这意味着它可以在类的所有方法内使用,也可以在类外使用。 c…

    PHP 2023年5月26日
    00
  • PHP中多字节字符串操作实例详解

    PHP中多字节字符串操作实例详解 本文主要讲解PHP中多字节字符串操作的方法,包括字符串长度、截取、替换、编码转换等常见操作。如果您在开发中遇到多字节字符的处理问题,可以参考本文,相信对您有所帮助。 获取字符串长度 在处理多字节字符时,需要特别注意字符串长度的计算。因为一个多字节字符占用的字节数可能不止一个,如果直接使用PHP内置的函数strlen获取字符串…

    PHP 2023年5月26日
    00
  • 详解Window7 下开发php扩展

    以下是详解”Windows7下开发PHP扩展”的完整攻略,该过程包含两条示例说明。 步骤1:安装必须工具 在开始进行PHP扩展开发之前,需要确保你的电脑上安装了以下工具: Visual Studio 2017或以上版本 PHP(预编译DLL文件) PHP开发包(一般来说PHP版本与预编译DLL文件要匹配) 步骤2:下载和解压PHP源码 首先需要从PHP官网上…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部