我们在用smarty的时候,经常要声明$smarty = new smarty();并且要定义很多smarty的参数,我们以前常用的作法是把它们放在某个全局文件中,要用的时候调用一下.下面我们用工厂模式简单阐述一下用工厂模式的解决方式:
我们声明一个工厂类,这个类继承自smarty类库
class mySmartyFactory extends smarty
{
function __contruct()
{
//在此初始化一切smarty需要初始化的东东.
$this->template_dir = 'dir/to/template_dir/';
$this->cache_dir = 'dir/to/cache_dir/';
}
}
当然,运行本文件之前必须导入smarty类文件.
当我们要用smarty的时候,就可以直接这样$mySmarty = new mySmartyFactory ();//所有的东东都在类内部初始化了,无需我们重复去做.
简而言这,工厂模式就是对类的封装,使我们在用原始类的时候能够在不改变类本身(smarty)的前提下对对象进行大量的操作.
至于多个类的工厂模式,比如更复杂的抽象类或接口等,其基本前提都是这样的.