PHP设计模式-建造者模式(构建者模式)
来源:互联网 发布:js array item 编辑:程序博客网 时间:2024/06/07 19:52
相信大家都听说过这么一个脑筋急转弯?把大象放进冰箱,要分几步?打开冰箱,把大象放进去,关上冰箱门。~~~哈哈。不错,就是宋丹丹小品里的一段。那么我们试着用程序实现一下?先建一个放大象的类,里面得有三个方法,开冰箱,放大象,关冰箱。So easy~
class PushElephant{ public function openFridge() { echo "打开冰箱".PHP_EOL; } public function pushElephant() { echo "把大象放入冰箱".PHP_EOL; } public function closeFridge() { echo "关上冰箱".PHP_EOL; }}那我们实现一个放大象的操作应该是这样的:
$pushAction = new PushElephant();$pushAction->openFridge();$pushAction->pushElephant();$pushAction->closeFridge();那么我每放一次,都要调用这三个方法。其实,每次的动作都是一样,没有什么改变。而且对于调用者来说很麻烦。如果步骤很多时候怎么办?或者说,如果有一个人,他不知道把大象放冰箱有哪几个步骤。那怎么办?好吧,那我们就帮他做好吧。简单地封装一下吧。于是把三个步骤放到一个步骤里:
class PushElephant{ public function openFridge() { echo "打开冰箱".PHP_EOL; } public function pushElephant() { echo "把大象放入冰箱".PHP_EOL; } public function closeFridge() { echo "关上冰箱".PHP_EOL; }//把三个步骤放到一个步骤里public function push(){$this->openFridge();$this->pushElephant();$this->closeFridge();}}以后我要把大象放到冰箱里,就只需要push()一下就可以了。我们可以看出,其实我们只是把一些常规操作,进行了简单的封装。我们把这种封装叫做构建者模式,也叫建造者模式。好,这时候又有一个自以为是的人,它把顺序弄反了,例如,他先关上冰箱,再放大象,再打开冰箱。(当然现实中没有人这种人。但在其它的一些东西的构建过程中,步骤的顺序就不那么明显),这可怎么办?那我们就把这三个方法隐藏起来,即把public改为protected.另外,习惯上,我们对于protected方法名前都会加一个单下划线(只是用于区分访问权限,不是必须,关键还是看个人编码习惯)。
class PushElephant{ protected function _openFridge() { echo "打开冰箱".PHP_EOL; } protected function _pushElephant() { echo "把大象放入冰箱".PHP_EOL; } protected function _closeFridge() { echo "关上冰箱".PHP_EOL; }//把三个步骤放到一个步骤里public function push(){$this->_openFridge();$this->_pushElephant();$this->_closeFridge();}}这时,调用者就可以不用关心细节了。从上面例子我们也可以看出来,对于建造者模式来说,它的优点在于,可以把繁锁的操作封装在一起,并且可以使调用者无需关心构建的细节。
- PHP设计模式-建造者模式(构建者模式)
- PHP设计模式-建造者模式(构建者模式)
- PHP设计模式系列 - 建造者模式
- PHP设计模式之:建造者模式
- PHP设计模式系列 - 建造者模式
- PHP设计模式系列 - 建造者模式
- PHP设计模式-建造者模式(Builder For PHP)
- php设计模式学习系列(六)--建造者模式
- PHP设计模式系列(八):建造者模式
- 设计模式:建造者模式
- 设计模式---建造者模式
- 设计模式---建造者模式
- 设计模式-----建造者模式
- 设计模式-【建造者模式】
- 设计模式--建造者模式
- 设计模式建造者模式
- 设计模式- 建造者模式
- 设计模式 - 建造者模式
- 深入PHP curl参数的详解
- 突破MySQL视图限制:获取创建视图的SQL语句
- 【C#如何判断字符串是否为空串】
- [Fedora]:Google Chrome安装错误
- 数塔
- PHP设计模式-建造者模式(构建者模式)
- JavaScript字符串插入、删除、替换函数的例子
- 面试遇到的一些题
- 从实时模式进入保护模式之一
- 用ckeditor实现图片上传
- 用VS2008打开2010的项目提示“ 选择的方案是解决方案文件,但是用此应用程序的较新版本创建的,无法打开。“
- Exported service does not require permission警告
- POJ 1208 (模拟)
- Game:伏击战场景设计手稿