基友們,遊戲玩累啦,來寫博客。哈哈 ~~ 幾乎每次面試過程中,苦逼的我們都會被問到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();