标签:设计模式 建造者模式
<?php /** * 1.6 建造者模式 * 定义: * 将一个复杂对象的构建与它的表示分离 * ,使得同样的构建过程可以创建不同的 * 表示。 * 此模式包含三种角色: * 1. 抽象建造者角色 * 职责: * 用于指定规则和流程 * 2. 具体建造者角色 * 职责: * 具体的建造过程 * 3. 指挥者角色 * 职责: * 用于指挥建造过程 * 4. 具体产品角色 * * 优点: * 1. 封装性 * 2. 建造者独立,容易扩展 * 3. 便于控制细节风险。 * 缺点: * 使用场景: * 1. 相同的方法,不同的执行顺序,产 * 生不同的事件时; * 2. 多个部件或零件都可以装配到一个 * 对象中,但是产生的运行结果又不 * 相同时; * 3. 产品类非常复杂,或者产品类中的 * 调用属性不同产生了不同的效能时 * * * * * */ /** * 抽象建造者角色 */ abstract class PersonBuilder{ abstract public function head(); abstract public function body(); abstract public function handLeft(); abstract public function handRight(); abstract public function legLeft(); abstract public function legRight(); } /** * 具体建造者角色 */ //瘦人的具体构建 class ThinPerson extends PersonBuilder{ public function head(){ echo ‘瘦人的头部构建成功<br/>‘; } public function body(){ echo ‘瘦人的躯干构建成功<br/>‘; } public function handLeft(){ echo ‘瘦人的左手构建成功<br/>‘; } public function handRight(){ echo ‘瘦人的左手构建成功<br/>‘; } public function legLeft(){ echo ‘瘦人的左腿构建成功<br/>‘; } public function legRight(){ echo ‘瘦人的右腿构建成功<br/>‘; } } /** * 胖人的具体构建 */ class FatPerson extends PersonBuilder{ public function head(){ echo ‘胖人的头部构建成功<br/>‘; } public function body(){ echo ‘胖人的躯干构建成功<br/>‘; } public function handLeft(){ echo ‘胖人的左手构建成功<br/>‘; } public function handRight(){ echo ‘胖人的右手构建成功<br/>‘; } public function legLeft(){ echo ‘胖人的左腿构建成功<br/>‘; } public function legRight(){ echo ‘胖人的右腿构建成功<br/>‘; } } /** * 指挥者角色 */ class Director{ public function __construct(PersonBuilder $person){ $person->head(); $person->body(); $person->handLeft(); $person->handRight(); $person->legLeft(); $person->legRight(); } } //客户端 $thinPerson=new ThinPerson(); $fatPerson=new FatPerson(); $d1=new Director($thinPerson); $d2=new Director($fatPerson); ?>
本文出自 “一切皆有可能” 博客,请务必保留此出处http://noican.blog.51cto.com/4081966/1614773
标签:设计模式 建造者模式
原文地址:http://noican.blog.51cto.com/4081966/1614773