基友们,游戏玩累啦,来写博客。哈哈 ~~ 几乎每次面试过程中,苦逼的我们都会被问到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();