PHP設計模式_工廠模式

OldBoy~發表於2018-02-01

瞭解

工廠模式,工廠方法或者類生成物件,而不是在程式碼中直接new。 
使用工廠模式,可以避免當改變某個類的名字或者方法之後,在呼叫這個類的所有的程式碼中都修改它的名字或者引數,只需要在工廠類裡修改需要new的類名即可。如果我們不使用工廠方式例項化這些類,則需要每一個類都需要new一遍,過程不可控,類多了,到處都是new的身影引進工廠模式,通過工廠統一建立物件例項。

程式碼

簡單案例①

<?php
//需要new的類
class Test1{  
    static function test(){
        echo __FILE__;
    }
}
<?php
//工廠類
class Factory{
    /*
     * 如果某個類在很多的檔案中都new ClassName(),那麼萬一這個類的名字
     * 發生變更或者引數發生變化,如果不使用工廠模式,就需要修改每一個PHP
     * 程式碼,使用了工廠模式之後,只需要修改工廠類或者方法就可以了。
     */
    static function createDatabase(){
        $test = new Test1();
        return $test;
    }
}
<?php
//呼叫的程式碼程式
spl_autoload_register('autoload1');

$test = Factory::createDatabase();
$test->test();
function autoload1($class){
    $dir  = __DIR__;
    $requireFile = $dir."\\".$class.".php";
    require $requireFile;
}

簡單案例②

<?php  
//工廠模式 提供獲取某個物件例項的一個介面,同時使呼叫程式碼避免確定例項化基類的步驟  
//字串類  
class String {  
    public function write() {}  
}  
//Json類  
class Json {  
    public function getJsonData() {}  
}  
//xml類  
class Xml {  
    public function buildXml() {}  
}  
//工廠類  
class Factory {  
    public static function create($class) {  
        return new $class;  
    }  
}  
Factory::create("Json"); //獲取Json物件  

 

相關文章