單例 和 工廠

       基友們,遊戲玩累啦,來寫博客。哈哈 ~~ 幾乎每次面試過程中,苦逼的我們都會被問到PHP的單利模式工廠模式

今天大家也各自己寫一哈,

單例模式

三私一共:私有構造方法、私有克隆方法、私有靜態變量

class Single_case (){

        static private  $single_obj = NULL; //創建私有靜態存儲對象,靜態防止多次實例化 

        private function __contruct(){

        echo '俺已經被實例化啦';    

};

        private function __clone(){}; //防止被克隆

        //公共唯一入口

        public function go_single(){

        if(is_null($single_obj)){

            $this->single_obj = new self();

        }    

        return $this->single_obj;

    }

}

工廠模式

工廠模式是複雜的php設計模式的基礎,可提高代碼的複用。

//抽象工廠接口

interface class mysql_db {

        public function factory_method();        

}

//具體工廠A

class factory_a implements mysql_db{

        //工廠a返回具體產品a

       public function prodect_a (){

          return new res_factory_a();

        }

}

//具體工廠b

class factory_b implements mysql_db{

        //工廠b返回產品b

        public function product_b(){

            return new res_factory_b();

        }

}

//抽象產品

interface class product{

    public function product_method();

//具體產品a   

class product_a implements product {

       //接口方法實現 輸出特定的字符串

        public function do_product_a(){

                ehco 'a';

        }

}

//具體產品b

class product_b implements product{

        //工廠b實現  輸出b

        public function do_product_b(){

                echo 'b';

        }

}


//客戶端調用

class client {

static function ojbk(){

        //調用a工廠

        $factory_a = new factory_a();

        $product_a  = $factory_a->res_factory_a();

        $product_a -> do_product_a();

        //調用b工廠

        $fatory_b = new factory_b();

        $product_b = $fatory_b->res_factory_b();

       $product_b -> do_product_b();

    }

}

client::ojbk();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章