標籤:require index names stat orm private static factory iss
首先準備檔案結構大概是下面這個樣子:
Object.php檔案:
1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: Administrator 5 * Date: 2016/3/10 6 * Time: 11:57 7 */ 8 9 namespace Factory;10 11 12 class Object {13 14 15 private static $instance;16 17 /**18 * 單例模式19 */20 21 private function __construct(){22 23 }24 25 public static function getInstance(){26 27 if(self::$instance){28 29 return self::$instance;30 }31 self::$instance = new self();32 33 return self::$instance;34 }35 36 37 public function say(){38 39 40 echo __METHOD__;41 42 }43 44 }
ObjectFactory.php檔案:
1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: Administrator 5 * Date: 2016/3/10 6 * Time: 11:56 7 */ 8 9 namespace Factory;10 11 12 class ObjectFactory {13 14 /**15 * 原廠模式16 */17 18 public static function createObject(){19 20 21 $obj = Object::getInstance();22 23 24 return $obj;25 }26 27 }
index.php檔案:
1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: Administrator 5 * Date: 2016/3/10 6 * Time: 11:55 7 */ 8 9 define(‘ROOT‘,__DIR__);10 11 require ‘autoload.php‘;12 13 $obj = Factory\ObjectFactory::createObject();14 15 $obj->say();
原廠模式的好處就是我們建立對象的方法是統一的,不是在我們需要的地方直接使用new進行建立,降低了模組之間的耦合度,並且當我們修改了類的名稱我們只需要在工廠類裡面修改一處即可完成。
單例模式好處是我們使用對象的時候不是每次使用都去new一個新對象出來,這樣造成很大的開支和浪費,單例模式保證我們程式運行過程中對象產生一次,節省了開支。
兩種通常模式都是放在一起使用的。
PHP原廠模式和單例模式