当前位置: 首页 > Linux

PHP设计模式-Builder建造者模式

时间:2023-04-06 21:37:33 Linux

整理一些demo和自己对AaronSaray写的PHP设计模式的理解。看完如果发现我的理解有误,请第一时间指出,谢谢拍赞,求鞭笞/***建造者模式*--------------------------------------***来自描述****建造者设计模式的主要目的是消除其他对象的复杂创建过程,*使用构建器设计模式不仅是最佳实践*并且在对象的构造和配置方法发生变化时最大限度地减少代码重复**==========================================***应用场景****数据库接口类|优化基类**------------------------------------**@version${Id}$*@authorShaoweiPu<54268491@qq.com>*///现在是这个情况,你是学生个人档案录入人员,你小时候看到Boss多年前写的录入类类进入{public$info=[];publicfunctionsetName($name){$this->info['name']=$name;}publicfunctionsetOld($old){$this->info['old']=$old;}publicfunctionsetGender($gender){$this->info['gender']=$gender;}}//然后$worker=newEntering;$worker->setName('jacky');$worker->setOld('22');$worker->setGender('male');//那么就可以了,一个学生的完整信息就是这样var_dump($worker->info);/*+-------------------------------------------------------------------|数组(大小=3)|'名称'=>字符串'jacky'(长度=5)|'old'=>字符串'22'(length=2)|'gander'=>string'male'(length=3)+-------------------------------------------------------------------*///但爱折腾的你永远不会放弃任何机会.自从学习了builder模式,总有一种想动的心,于是就有了下面的classclassEnteringBuilder{protected$_baseObject=null;受保护的$_newInfo=[];publicfunction__construct(array$info){$this->_baseObject=newEntering;$this->_newInfo=$info;}publicfunctionbuild(){$this->_baseObject->setName($this->_newInfo['name']);$this->_baseObject->setOld($this->_newInfo['old']);$this->_baseObject->setGender($this->_newInfo['gander']);}publicfunctiongetInfo(){return$this->_baseObject->info;}}//然后$new_worker=newEnteringBuilder(['name'=>'lucy','old'=>22,'gander'=>'女',]);$new_worker->build();//然后这样就可以了,一个学生的完整信息就这样弄出来了var_dump($new_worker->获取信息());/*+------------------------------------------------------------------|数组(大小=22)|'Host'=>string'localhost'(length=9)|'Db'=>字符串'sys'(长度=3)|'User'=>string'mysql.sys'(length=9)|'Select_priv'=>字符串'N'(长度=1)|'Insert_priv'=>字符串'N'(长度=1)|'Update_priv'=>字符串'N'(长度=1)|'Delete_priv'=>字符串'N'(长度=1)|'Create_priv'=>字符串'N'(长度=1)|'Drop_priv'=>字符串'N'(长度=1)|'Grant_priv'=>字符串'N'(长度=1)|'References_priv'=>字符串'N'(length=1)|'Index_priv'=>字符串'N'(长度=1)|'Alter_priv'=>字符串'N'(长度=1)|'Create_tmp_table_priv'=>string'N'(length=1)|'Lock_tables_priv'=>字符串“N”(长度=1)|'Create_view_priv'=>字符串'N'(长度=1)|'Show_view_priv'=>字符串'N'(长度=1)|'Create_routine_priv'=>字符串'N'(长度=1)|'Alter_routine_priv'=>字符串'N'(长度=1)|'Execute_priv'=>字符串'N'(长度=1)|'Event_priv'=>字符串'N'(长度=1)|'Trigger_priv'=>string'Y'(length=1)+-------------------------------------------------------------------*/