PHP设计模式——建造者模式
建造者模式也称生成器模式,核心思想是将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。
例如:汽车,他的发动机引擎有好多品牌,轮胎也有各种材质,内饰更是千奇百怪;鸟,他的头、翅膀以及脚有各种颜色和形状,在创建这种复杂对象的时候,我们建议使用建造者模式。
类图:
建造者模式一般认为有四个角色:
1.产品角色,产品角色定义自身的组成属性
2.抽象建造者,抽象建造者定义了产品的创建过程以及如何返回一个产品
3.具体建造者,具体建造者实现了抽象建造者创建产品过程的方法,给产品的具体属性进行赋值定义
4.指挥者,指挥者负责与调用客户端交互,决定创建什么样的产品
代码:
<!--?php /** * Created by PhpStorm. * User: Jiang * Date: 2015/4/25 * Time: 9:31 */ /**具体产品角色 鸟类 * Class Bird */ class Bird { public $_head; public $_wing; public $_foot; function show() { echo 头的颜色:{$this--->_head} ; echo 翅膀的颜色:{$this->_wing} ; echo 脚的颜色:{$this->_foot} ; } } /**抽象鸟的建造者(生成器) * Class BirdBuilder */ abstract class BirdBuilder { protected $_bird; function __construct() { $this->_bird=new Bird(); } abstract function BuildHead(); abstract function BuildWing(); abstract function BuildFoot(); abstract function GetBird(); } /**具体鸟的建造者(生成器) 蓝鸟 * Class BlueBird */ class BlueBird extends BirdBuilder { function BuildHead() { // TODO: Implement BuilderHead() method. $this->_bird->_head=Blue; } function BuildWing() { // TODO: Implement BuilderWing() method. $this->_bird->_wing=Blue; } function BuildFoot() { // TODO: Implement BuilderFoot() method. $this->_bird->_foot=Blue; } function GetBird() { // TODO: Implement GetBird() method. return $this->_bird; } } /**玫瑰鸟 * Class RoseBird */ class RoseBird extends BirdBuilder { function BuildHead() { // TODO: Implement BuildHead() method. $this->_bird->_head=Red; } function BuildWing() { // TODO: Implement BuildWing() method. $this->_bird->_wing=Black; } function BuildFoot() { // TODO: Implement BuildFoot() method. $this->_bird->_foot=Green; } function GetBird() { // TODO: Implement GetBird() method. return $this->_bird; } } /**指挥者 * Class Director */ class Director { /** * @param $_builder 建造者 * @return mixed 产品类:鸟 */ function Construct($_builder) { $_builder->BuildHead(); $_builder->BuildWing(); $_builder->BuildFoot(); return $_builder->GetBird(); } }
调用客户端测试代码:
header(Content-Type:text/html;charset=utf-8); //------------------------生成器模式测试代码------------------ require_once ./Builder/Builder.php; $director=new Director(); echo 蓝鸟的组成:
; $blue_bird=$director->Construct(new BlueBird()); $blue_bird->Show(); echo
Rose鸟的组成:
; $rose_bird=$director->Construct(new RoseBird()); $rose_bird->Show();
PHP面向对象设计模式
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
3 몇 주 전ByDDD
Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법
2 몇 주 전ByDDD
Atomfall에서 크레인 제어 키 카드를 찾을 수 있습니다
3 몇 주 전ByDDD
R.E.P.O. 저축 설명 (및 파일 저장)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Dreamweaver Mac版
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
