php设计模式之工厂模式

时间:2022-10-01 09:20:20

工厂模式:提供某个对象的心的实例的一个接口,同时使调用代码避免确定实际实例化基类的步骤。

 

/**
* 工厂模式
*/
class CDFactory
{
    
    public static function create($type)
    {
        $class = strtolower($type)."CD";
        return new $class;
    }
}

 

/**
* 基本CD类
*/
class standardCD
{
    
    public function addSongs($songs)
    {
        # code...
    }
}

/**
* 增强型CD类
*/
class enhancedCD
{
    public function __construct()
    {
        $this->tracks[] = 'DATA TRACK';
    }
    
    public function addSongs($songs)
    {
        # code...
    }
}

 

 

需要新的新建一个类即可,工厂模式完全不用动,即使功能需求有改变只需要改变对应的类就可以,这里和委托模式区别。

/**
 * 使用方法
 */
$type = 'standard';

$cd = CDFactory::create($type);//  new standerdCD()
$cd->setBand($band);
$cd->setTitle($tltle);