說明
1.工廠模式解決的是如何不透過new建立實例物件。
2.有一些方法可以創建目標,而不是new。
如果想改變創建的物件類型,只需要改變工廠,使用這個工廠的所有程式碼就會自動改變。
3、通常與介面一起使用,應用程式不需要知道這些實例化類別的具體細節。
只要知道工廠回傳的是支援某個介面類別的類別就可以輕鬆使用。
實例
/** * 抽像出一個人的介面 * Interface Person */ interface Person { public function showInfo(); } /** * 一個繼承於抽像人介面的學生類別 * Class Student */ class Student implements Person { public function showInfo() { echo "這是一個學生 n"; } } /** * 一個繼承於抽像人介面的老師類別 * Class Teacher */ class Teacher implements Person { public function showInfo() { echo "這是老師 n"; } } /** * 人工廠 * Class PersonFactory */ class PersonFactory { public static function factory($person_type) { // 將傳入的型別首字母大寫 $class_name = ucfirst($person_type); if(class_exists($class_name)){ return new $class_name; }else{ throw new Exception("類別:$class_name 不存在",1); } } } // 需要一個學生$student = PersonFactory::factory('student'); echo $student->showInfo(); // 需要一個老師的時候$teacher = PersonFactory::factory('teacher'); echo $teacher->showInfo();
以上就是php工廠模式的介紹,希望對大家有幫助。