PHP简单工厂模式

在编程中,会遇到很多类文件代码类似,功能相似,但是业务处理却要求这些类作为单独的类存在,于是需要建立不同的文件来进行相应的实现这些类。

这时候,我们是否可以考虑将这些类使用工厂模式来实现。用一个工厂类来返回这些类似接口的不同的类。

工厂模式是多态的,可以通过他替换类,修改配置,从而使程序变得更加灵活。 编写工厂模式的关键是类中要包含一个静态方法,这个静态方法可以接受任意数据的参数,结果返回我们需要的具体的对象。

下面通过代码实例来实现一个简单的工厂类:

常见的nosql中有memcache、mongodb、redis等,这里我们不讨论这些nosql,而是通过工厂根据自己的需要来实现对他们的初始化.

首先建立一个工厂类:

01 <?php
02 class Http{
03     public function __construct(){}
04  
05     // 工厂方法
06     public function Cache($class)
07     {
08         $class strtoupper($class);
09         switch ($class) {
10             case 'memcache':
11                 include 'Cache/Memcache.class.php';
12                 return new Cache_Memcache();
13                 break;
14             case 'mongodb':
15                 include 'Cache/MongoDB.class.php';
16                 return new Cache_MongoDB();
17                 break;
18             case 'redis':
19                 include 'Cache/Redis.class.php';
20                 return new Cache_Redis();
21                 break;
22         }
23     }
24 }
25 ?>

建立文件夹Cache,并分别文件Memcache.class.php、MongoDB.class.php、Redis.class.php文件,并分别实现:

Memcache.class.php:

01 <?php
02 class Cache_Memcache{
03     public function getInstance(){
04         // Memcache实例化方法
05         $_mc new Memcached();
06         ...
07         return $_mc;
08     }
09  
10     public __construct(){
11         $mc $this->getInstance();
12         return $mc;
13     }
14 }
15 ?>

MongoDB.class.php

01 <?php
02 class Cache_MongoDB{
03     public function getInstance(){
04         // MongoDB实例化方法
05     }
06  
07     public __construct(){
08         $mongo $this->getInstance();
09         return $mongo;
10     }
11 }
12 ?>

Redis.class.php

01 <?php
02 class Cache_Redis{
03     public function getInstance(){
04         // Redis实例化方法
05     }
06  
07     public __construct(){
08         $redis $this->getInstance();
09         return $redis;
10     }
11 }
12 ?>

4个文件就构成了工厂模式实现的过程,这个时候我们通过下面的方法进行使用:

1 <?php
2 $creator new Cache();    // 实例化工厂类
3 $redisObj $creator->factory('redis');    // 创建获得相应的cache类
4 ?>

完结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值