介绍
看到工厂模式最白话的介绍就是,工厂嘛,肯定不让进,你把原料送到门口,再另一个门口等着拿成品就行。
在实际引用中,以缓存为例,缓存可以用redis,mysql,mamecache等存储,存储的容器不同,但是使用方法相同,
都是set,get,del这些,这就是他们的共性,在代码中用接口(interface)实现。接口嘛,开发规法、就是让各个平级的类有公共的方法。
上代码
<?php
namesapce Factory\CacheFactory;
interface CacheFactory{
public function get($name);
public function set($name, $value);
public function rm($name);
public function clear();
}
class MysqlCache implements CacheFactory{
public function get($name)
{
// TODO: Implement get() method.
}
public function set($name, $value)
{
// TODO: Implement set() method.
}
public function rm($name)
{
// TODO: Implement rm() method.
}
public function clear()
{
// TODO: Implement clear() method.
}
}
class RedisCache implements CacheFactory{
public function get($name)
{
// TODO: Implement get() method.
}
public function set($name, $value)
{
// TODO: Implement set() method.
}
public function rm($name)
{
// TODO: Implement rm() method.
}
public function clear()
{
// TODO: Implement clear() method.
}
}
class cacheFactory{
static public function factory($class_name){
return new $class_name();
}
}
$obj = cacheFactory::factory('redis');
$obj->get('list1');
总结
以上代码就是实现mysql实现缓存,如果redis也是相同,接口内的方法都需要实现,在框架加载时会根据所设置的缓存驱动名而选择实现那个类,这就是用php实现的工厂模式。