首页 > 编程语言 >浅谈PHP设计模式的建造者模式

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

时间:2023-01-06 21:35:12浏览次数:53  
标签:function PHP 浅谈 echo paper examination BuildQuestion 设计模式 public

简介:

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

适用场景:

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

优点:

创建和表象分离

缺点:

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

代码:

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();

标签:function,PHP,浅谈,echo,paper,examination,BuildQuestion,设计模式,public
From: https://www.cnblogs.com/phpphp/p/17031616.html

相关文章

  • phpstudy 报500超时 在 httpd.conf 最后加上
    phpstudy报500超时在httpd.conf 最后加上<IfModulemod_fcgid.c>ProcessLifeTime3600FcgidProcessLifeTime9999999FcgidIOTimeout9999999FcgidConnectTimeout......
  • 前端浅谈 - js的垃圾回收
    1.对于js来说什么是垃圾?    垃圾就是没用了的东西.emmm~~对于js来说,这种说法不是特别准确但是又特别贴切.占着内存但是又不被需要的变量被称为垃圾(有被内涵到).......
  • 浅谈可持久化栈的实现
    可持久化栈看到网上基本没有说得很详细的,所以我来讲一讲。一种好的方法是直接用可持久化数组(线段树)来模拟栈,单次插入/删除时间复杂度\(O(\logn)\),空间复杂度\(O(n\lo......
  • thinkphp6控制器、验证器、模型、service,各层写的内容
    思路:控制器:路由作用,基本访问流程,定义返回数据格式验证码:验证提交的数据模型:所有数据库表的操作(按表建,一张表的操作尽量都在同一个文件里)service:公共的逻辑 代码:控......
  • 浅谈西门子Teamcenter和MES的关系
    Teamcenter是西门子工业软件里的主打产品,主要用来实施企业产品设计数据管理、物料清单管理和工艺规划管理,也就是常说的PDM、BOM和TCM(或者CAPP)。而Teamcenter能够在行业占......
  • web渗透【11】phpmyadmin写shell的三种方法
    查看phpMyAdmin能否自定义导出文件目录的权限showglobalvariableslike"%secure%";//查询secure_file_priv配置  secure_file_prive=null       ......
  • 设计模式-职责链模式
    1概念职责链模式(chainofresponsilitypattern)的原始定义是:避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求.将接收请求的对象连接成一条......
  • 设计模式-策略模式
    1概念策略模式(strategypattern)的原始定义是:定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。2适用......
  • nginx 安装 配置 支持 访问 thinkphp5
    server{//这个在windows下配置是ok的,linux下不知道是否可以生效!待后续验证listen8999;server_namelocalhost;location/{root/......
  • thinkphp 实例化模块对象
    /***实例化service对象*@paramstring$fileName类名或标识*@paramstring$module//应用模块名*@paramarray$args构造参数*@parambool$newInst......