이 글은 PHP 디자인 패턴의 빌더 모드를 소개합니다. 이제 여러분과 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
빌더 모드(Builder)가 가장 중요하다고 생각합니다. 창조 패턴을 이해하기가 더 어려운 것 중 하나입니다.
빌더 패턴과 추상 팩토리 패턴은 둘 다 조합을 생성한다는 점에서 다소 유사하지만 추상 팩토리가 더 자주 사용되고 빌더는 덜 일반적으로 사용됩니다.
빌더 패턴의 특징은 생성과 표현의 분리입니다.
계속해서 게임을 예로 들면, 영웅을 만들기 위해 게임을 플레이할 때 먼저 추상 빌더 클래스를 추상화한 다음 모든 영웅이 이 추상 클래스를 상속합니다. Hero 클래스는 생성과 분리된 영웅의 표현 클래스로, 이 클래스를 통해 모든 영웅을 대표할 수 있다.
영웅을 추가해야 한다면 Class GuanYu와 유사한 클래스를 추가하고 클라이언트를 켜세요.
녹음 코드는 다음과 같습니다.
<?php Class Hero { // 技能 public $_skill; // 武器 public $_weapon; // 坐骑 public $_horse; /** 英雄表示方法,不同英雄又不同表示 * Display */ function Display() { echo "绝招是:{$this->_skill}"; echo "武器是:{$this->_weapon}"; echo "坐骑是:{$this->_horse}"; } } /** 英雄建造器 抽象类 * abstract HeroBuilder */ abstract Class HeroBuilder { protected $_hero; function __construct() { $this->_hero = new Hero(); } //抽象英雄绝招方法 abstract function HeroSkill(); //抽象英雄武器方法 abstract function HeroWeapon(); //抽象英雄坐骑方法 abstract function HeroHorse(); // 创建英雄方法 abstract function CreateHero(); } /** 关羽英雄类 继承抽象类必须完成抽象方法 * GuanYu */ Class GuanYu extends HeroBuilder { function HeroSkill() { $this->_hero->_skill = "拖刀计<br/>"; } function HeroWeapon() { $this->_hero->_weapon = "青龙偃月刀<br/>"; } function HeroHorse() { $this->_hero->_horse = "赤兔马<br/>"; } function CreateHero() { return $this->_hero; } } /** 英雄接口类 * HeroApi */ Class HeroApi { function Create($_obj) { $_obj->HeroSkill(); $_obj->HeroWeapon(); $_obj->HeroHorse(); return $_obj->CreateHero(); } }
<?php // 建造者模式 index.php header("Content-Type:text/html;charset=utf-8"); require_once "Builder.php"; // 英雄接口类 $obj = new HeroApi(); // 创建关羽英雄对象 以后想用什么就创建什么 $guanyu = new GuanYu(); // 创建加入战场 $guanyuhero = $obj->Create($guanyu); echo "关羽加入战场<br/>"; $guanyuhero->Display();// 展示
출력 결과:
관우가 전장에 합류합니다
요령: 칼 끌기
무기: 청룡 달칼 ㅋㅋㅋ 추상 공장
위 내용은 PHP 디자인 패턴 빌더 패턴의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!