加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP计划模式之工场模式实例总结

发布时间:2021-03-07 03:21:44 所属栏目:编程 来源:网络整理
导读:本篇章节讲授PHP计划模式之工场模式。供各人参考研究详细如下: 行使工场模式的目标或方针? 工场模式的最大利益在于建设工具上面,就是把建设工具的进程封装起来,这样随时可以发生一个新的工具。 镌汰代码举办复制粘帖,耦合相关重,牵一动员其

本篇章节讲授PHP计划模式之工场模式。分享给各人供各人参考,详细如下:

行使工场模式的目标或方针?

工场模式的最大利益在于建设工具上面,就是把建设工具的进程封装起来,这样随时可以发生一个新的工具。

镌汰代码举办复制粘帖,耦合相关重,牵一动员其他部门代码。

普通的说,早年建设一个工具要行使new,此刻把这个进程封装起来了。

假设不行使工场模式:那么许多处所挪用类a,代码就会这样子建设一个实例:new a(),假设某天必要把a类的名称修改,意味着许多挪用的代码都要修改。

工场模式的利益就在建设工具上。

工场模式的利益就在建设工具上。成立一个工场(一个函数或一个类要领)来制造新的工具,它的使命就是把工具的建设进程都封装起来,

建设工具不是行使new的情势了。而是界说一个要领,用于建设工具实例。

每个类也许会必要毗连数据库。那么就将毗连数据库封装在一个类中。往后在其他类中通过类名:

为什么引入抽象的观念?

想一想,在实际糊口中,当我们无法确定某个详细的对象的时辰,每每把一类对象归于抽象种别。

工场要领:

好比你的工场叫做“香烟工场”,那么可以有“七匹狼工场”“中华工场”等,可是,这个工场只生厂一种商品:香烟;

抽象工场:无法描写它到底出产什么产物,它出产许多范例的产物(以是抽象工场就会天生子工场)。

你的工场是综合型的,是出产“一系列”产物,而不是“一个”,好比:出产“香烟”,尚有“啤酒”等。然后它也可以有派生出来的详细的工场,但这些工场都是出产这一系列产物,只是也许由于区域纷歧样,为了顺应内地生齿胃,味道也不太一样。

工场模式:领略成只天生一种产物的工场。好比出产香烟的。

工场要领:工场的一种产物出产线 。好比键盘的天生进程。

别人会辩驳:吃饱了没事干,必然要修改类名称呢?这个说不定。一样平常都不会去修改类名称。

着实工场模式有许多变体,抓住精华才是要害:只要是可以按照差异的参数天生差异的类实例,那么就切合工场模式的计划头脑。

这样子让我遐想到框架中常常会有认真天生详细类实例的要领供挪用。

因为前面行使过phpcms,用phpcms的来辅佐领略,越发好,如下:

将会天生获得order这个实例。转达差异的参数获得差异的类实例,这个就切合工场模式。

虽然load_app_class这个要领内里还会团结了单件模式的头脑。停止挪用n次,就一再建设n个沟通的实例

工场模式我想到的一个典范的应用就是:php也许要链接mysql,也也许要链接sqlserver,尚有其他什么数据库。那么做一个抽象的数据库类,

这个类就是一个工场类,专门认真发生差异的工具。

这样子做很利便扩展。我们在直接链接数据库的时辰,不是行使代码

的情势

而可以动态天生一个毗连数据库的实例。可所以mysql,也可所以毗连oracle的。

在thinkphp框架中也有对应的实现:

Db.class.php就是一个工场类(也可以叫做数据库中间层,之以是叫做中间层,是由于可以操纵mysql、oracle等各数据库。而这个类就是中间层浸染,屏障掉详细的实现。让措施员可以不窜改原本的查询代码。中间层来对接mysql、oracle等数据库。

Db.class.php中有个factory()要领来建设差异的数据库实例

parseConfig($db_config); if(empty($db_config['dbms'])) throw_exception(L('_NO_DB_CONFIG_')); // 数据库范例 $this->dbType = ucwords(strtolower($db_config['dbms'])); $class = 'Db'. $this->dbType; if(is_file(CORE_PATH.'Driver/Db/'.$class.'.class.php')) { // 内置驱动 $path = CORE_PATH; }else{ // 扩展驱动 $path = EXTEND_PATH; } // 搜查驱动类 if(require_cache($path.'Driver/Db/'.$class.'.class.php')) { $db = new $class($db_config); // 获取当前的数据库范例 if( 'pdo' != strtolower($db_config['dbms']) ) $db->dbType = strtoupper($this->dbType); else $db->dbType = $this->_getDsnType($db_config['dsn']); if(APP_DEBUG) $db->debug = true; }else { // 类没有界说 throw_exception(L('_NOT_SUPPORT_DB_').': ' . $db_config['dbms']); } return $db; }

尚有做付出接口的时辰,将来也许对应差异的付出网关:付出宝、财付通、网银在线等。利便将来扩展,计划成工场模式。定一个专门出产网关接口的工场,抽象出来,做成接口情势,让全部的子类都要实现它的接口。往后加一个付出方法,要行使哪一种付出方法,改变一下参数即可。

书本(英文名称为PHP 5 Power Programming)也提到一个工场模式的例子,学到一招:在为用户注册的时辰,分为许多种脚色的用户。好比册用户,匿名用户、打点员用户等。完全行使可以行使工场的头脑来实现,代码也轻易维护,为每种脚色可以天生操纵的类。

界说以下几个类:

UserFactory 用户工场类,认真天生差异的用户类 User:用户类的基类,全部用户类都是担任这个类 差异脚色的类:注册用户类、匿名用户类、打点员用户类

总结竣事,接待指正!

更多关于PHP相干内容感乐趣的读者可查察本站专题:《》、《》、《》、《》、《》及《》

但愿本文所述对各人PHP措施计划有所辅佐。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读