1. 程式人生 > >php面向物件(工廠模式與單例模式)

php面向物件(工廠模式與單例模式)

今天剛學習了php的設計模式,一個是工廠模式而另一個是單例模式,工廠模式設計出來就是為了一種方便建立物件而做出來的。還有一個是單例模式,單例模式的設計有些比較難以理解,我們必須一步一步的分析:單例類的情況必須去建立類的例項,而且必須只有一個,首先沒有物件例項的情況就是將它的構造器私有化,程式碼是這樣子的:private function __construct(){} 。第二步就是寫一個方法,去只生成一個物件就返回而有的話就直接返回。這個我把整個的程式碼貼下:

 class A{};
            class B{};            
            class WorkStation {  /* 工廠類 */
                static function GetObject($className)
                {
                    $obj = new $className();
                    return $obj;
                }
            }
            $o1 = WorkStation::GetObject("A");
            $o2 = WorkStation::GetObject("B");
            var_dump($o1); var_dump($o2);                                                                     
            echo "<hr>";
            
            class Single {  /* 單例模式只允許建立類的物件 */
                    private function __construct()
                    {                        
                    }
                    
                    static $instance = null;
                    static function GetObject($className)
                    {
                        if (!isset(self::$instance)) /* 如果生產的例項未空 */
                        {
                            $obj = new $className();
                            self::$instance = $obj;
                            return self::$instance;                                                         
                        }else{                                                        
                            return self::$instance;                                                        
                        }
                    }                                        
            }
            
            $singleA = Single::GetObject("A");
            $singleB = Single::GetObject("A");
            var_dump($singleA);var_dump($singleB);