[PHP] 生成器模式-创建型设计模式
时间:2022-07-28
本文章向大家介绍[PHP] 生成器模式-创建型设计模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
目的:生成器的目的是将复杂对象的创建过程(流程)进行抽象,生成器表现为接口的形式。
如果对象有复杂的继承树,理论上创建对象的生成器也同样具有复杂的继承树。
传进来一个生成器, 我调用这个生成器来生成我所需要的汽车,这就是生成器模式的核心.这个生成器Builder是个接口,把复杂对象的创建过程进行抽象
class Director
{
public function build(Builder $builder): Vehicle
{
$builder->createVehicle();
$builder->addDoors();
$builder->addEngine();
$builder->addWheel();
return $builder->getVehicle();
}
}
这就是生成器这个接口
interface Builder
{
public function createVehicle();
public function addWheel();
public function addEngine();
public function addDoors();
public function getVehicle(): Vehicle;
}
有两个具体的实现类 CarBuilder TruckBuilder 分别生成汽车和卡车
class TruckBuilder implements Builder
{
private Truck $truck;
public function addDoors(){
}
public function addEngine(){
}
public function addWheel(){
}
public function createVehicle(){
}
public function getVehicle(): Vehicle{
}
}
使用的时候,先创建builder,把builder通过参数传递进去
$truckBuilder = new TruckBuilder();
$newVehicle = (new Director())->build($truckBuilder);
- xss如何加载远程js的一些tips
- Android中如何实现图文混排
- Jenkins 创始人:持续交付的 What、Why 及 How
- Android中如何提取和生成mp4文件
- 两张图片告诉你为什么域名会被解析到65.49.2.178
- 【有人@我】Android中高亮变色显示文本中的关键字
- 一个简单易用的 Android 导航栏TitleBar
- 分析一个跨平台DDOS僵尸网络
- Android快速开发框架 Ultimate
- Cisco Linksys路由器蠕虫The Moon正在蔓延
- 移动支付安全评测:微信支付篇
- 如何优化 Android Studio 启动、编译和运行速度?
- 微信小程序左右滑动切换图片酷炫效果(附效果)
- Facebook推出用于android数据加密的开源API
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- CentOS 7.3配置Nginx虚拟主机的方法步骤
- Linux下alias命令的用法详解
- Linux搭建自己Nexus私服的实现方法
- centos7系统nginx服务器下phalcon环境搭建方法详解
- Logrotate实现Catalina.out日志每俩小时切割示例
- Linux常见问题解决方案汇总
- Linux中文件/文件夹无法删除的解决方案
- GNU Parallel的具体使用
- crontab定时任务不执行的原因分析与解决方法
- 在Linux中安装ASPNET.Core3.0运行时的示例代码
- linux Bash脚本判别使用者的身份方法示例
- 配置Linux使用LDAP用户认证的方法
- linux Dig命令使用大全
- Ubuntu虚拟机下使用cutecom进行串口通信的方法
- 虚拟机Linux系统忘记密码修改root或其他用户密码的方法