设计模式之建造者模式--PHP
建造者模式:将一个负责对象的构建与它的表示分离,使得同样的构建过程有不同的表示。建造者模式是一步一步创建负责的对象,它允许开发者只通过指定对象的类型和内容就可以创建它们。开发者不需要知道具体的构造细节。
UML图:

构造者模式的demo
<?php
/**
* @desc 建造者模式
* Created by PhpStorm.
* User: zzq
* Date: 2019-02-14
* Time: 16:22
*/ //定义一个对象,这里只有对象属性
class People{
public $head;
public $body;
public $foot;
public function __construct(){
}
}
//建造者的抽象类,所有建造者都到实现的方法
abstract class PeopleBuilder{
abstract function headBuilder();
abstract function bodyBuilder();
abstract function footBuilder();
abstract function returnResult();
}
//真正的建造者
class childernBuilder extends PeopleBuilder{
public $people;
public function __construct(){
$this->people = new People();
} function headBuilder(){
$this->people->head = 'this is child\'s head';
echo PHP_EOL;
} function bodyBuilder(){
$this->people->body = 'this is child\'s body';
echo PHP_EOL;
} function footBuilder(){
$this->people->foot = 'this is child\'s foot';
echo PHP_EOL;
} function returnResult(){
return $this->people;
}
}
//指挥者,用来指挥建造者的行为动作
class Director{
function __construct(PeopleBuilder $peopleBuilder){
$peopleBuilder->headBuilder();
$peopleBuilder->bodyBuilder();
$peopleBuilder->footBuilder();
}
}
//测试方法
$builder = new childernBuilder();
$director = new Director($builder);
$people = $builder->returnResult();
print_r($people);
demo执行结果
People Object
(
[head] => this is child's head
[body] => this is child's body
[foot] => this is child's foot
)
建造者模式的优点:
建造者模式可以很好地将一个对象的实现和相关的业务逻辑分离开来,从而在不改变事件逻辑的前提下,使增加或者改变实现变得容易的很多。
建造模式的缺点:
建造者接口的修改会导致所有执行类也要变动。
设计模式之建造者模式--PHP的更多相关文章
- Java设计模式之建造者模式(Builder)
前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...
- C#设计模式(5)——建造者模式(Builder Pattern)
一.引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成.例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象, ...
- 【GOF23设计模式】建造者模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]建造者模式详解类图关系 建造飞船 package com.test.Builder; public class AirShi ...
- C++设计模式之建造者模式(三)
4.引入钩子方法的建造者模式 建造者模式除了逐步构建一个复杂产品对象外.还能够通过Director类来更加精细地控制产品的创建过程.比如添加一类称之为钩子方法(HookMethod)的特殊方法来控制是 ...
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabc ...
- 折腾Java设计模式之建造者模式
博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...
- C#设计模式之四建造者模式(Builder Pattern)【创建型】
一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...
- Java 设计模式之建造者模式(四)
原文地址:Java 设计模式之建造者模式(四) 博客地址:http://www.extlight.com 一.前言 今天继续介绍 Java 设计模式中的创建型模式--建造者模式.上篇设计模式的主题为 ...
- GOF23设计模式之建造者模式
GOF23设计模式之建造者模式 场景: 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样的一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所 ...
- java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
随机推荐
- 手撕公司SSO登陆原理
Single Sign-on SSO是老生常谈的话题了,但部分同学对SSO可能掌握的也是云里雾里,一知半解.本次手撕公司的SSO登陆原理,试图以一种简单,流畅的形式为你提供 有用的SSO登陆原理. 按 ...
- 第三十八章 POSIX线程(二)
线程属性 初始化与销毁属性 int pthread_attr_init(pthread_attr_t *attr); int pthread_attr_destroy(pthread_attr_t * ...
- 网站安全配置Nginx防止网站被攻击
https://blog.csdn.net/u011078940/article/details/51426288
- PHP array_multisort实现二维数组排序
PHP array_multisort实现二维数组排序 参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值 ...
- 计划任务at和crontab
目标:会看,会写计划任务时间,会制定计划任务 一次性:at yum -y install at #安装at systemctl start atd #启动at服务 systemctl enable a ...
- 在控制器中如何对frxml的控件初始化
如果在控制器中实现Initializable这个接口,并重iInitializable这个方法 对于一个fxml文件来说它首先执行控制器的构造函数,这个时候它是无法对@FXML修饰的方法进行访问的,然 ...
- Eclipse中修改tomcat的部署路径deploypath
在eclipse上面部署web项目后,它没有将你的项目文件放到tomcat 的目录下面.而是放在了你的工作目录下面. 在tomcat上右键选择“stop” .停止eclipse内的Tomcat服务器 ...
- 设置eclipse的字体大小
window->preferences->general->Appearance->Colors and Fonts->basic->text font->点 ...
- C++中对C的扩展学习新增语法——引用
引用 引用的好处: 1.引用的好处 C++使用结构体,不需要再使用 typedef. 2.值传递是将实参进行拷贝,赋值给形参,如果对象比较大,每次拷贝效率比较低,并且函数内部无法修改外部变量的值,能力 ...
- C#怎么实现文件下载功能的四种方法
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...