簡單工廠模式(三)

工廠模式,就是負責生成其他對象的類或方法。

1 類實現

比如,我們有一些類,它們都繼承自交通工具類:

interface Vehicle
{
    public function drive();
}

class Car implements Vehicle
{
    public function drive()
    {
        echo '汽車靠四個輪子滾動行走。';
    }
}

class Ship implements Vehicle
{
    public function drive()
    {
        echo '輪船靠螺旋槳划水前進。';
    }
}

class Aircraft implements Vehicle
{
    public function drive()
    {
        echo '飛機靠螺旋槳和機翼的升力飛行。';
    }
}

再創建一個工廠類,專門用作類的創建,:

class VehicleFactory
{
    public static function build($className = null)
    {
        $className = ucfirst($className);
        if ($className && class_exists($className)) {
            return new $className();
        }
        return null;
    }
}

工廠類用了一個靜態方法來創建其他類,在客戶端中就可以這樣使用:

VehicleFactory::build('Car')->drive();
VehicleFactory::build('Ship')->drive();
VehicleFactory::build('Aircraft')->drive();

省去了每次都要new類的工作。

2 解決

 

 

參考資料:

  1. Design Patterns: The Simple Factory Pattern
  2. Understanding the Factory Method Design Pattern
  3. 設計模式:簡單工廠、工廠方法、抽象工廠之小結與區別
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章