设计模式

设计模式

1 . 单例模式

/**
三私一公
*私有的静态属性:保存类的单例
*私有的__construct():阻止在类的外部实例化
*私有的__clone():阻止在类的外部clone对象
*共有的静态方法:获取类的单例
*/
class MySQLDB {
    private static $instance;   //保存类的单例
    private function __construct() {    //阻止在类的外部实例化
    }
    private function __clone() {    //阻止在类的外部clone对象
    }
    //获取当前类的单例
    public static function getInstance() {
        if(!self::$instance instanceof self)//$instance中保存的不是MySQLDB类的单例就实例化
            self::$instance=new self();
        return self::$instance; //返回单例
    }
}
//测试
$db1=MySQLDB::getInstance();
$db2=MySQLDB::getInstance();
var_dump($db1,$db2);

特点:

1\ 一个类只能有一个对象
2\ 实现三私一共
3\ instanceof:判断对象是否是类数据类型

2 . 工厂模式

特点:

传递不同的参数获取不同的对象
';
    }
}
class ProductsB {
    public function show() {
        echo '商品B
'; } } //工厂模式 class ProductsFactory { public static function create($num) { //传递不同的参数获取不同的对象 switch($num) { case 1: return new ProductsA; case 2: return new ProductsB; default: return null; } } } //测试 $obj1= ProductsFactory::create(1); $obj2= ProductsFactory::create(2); $obj1->show(); //商品A $obj2->show(); //商品B

3 . 策略模式

特点:

传递不同的参数,调用不同的方法;
';
    }
}
class Bus {
    public function method() {
        echo '坐车去
'; } } class Strategy { public function way($obj) { $obj->method(); //传递不同的参数调用不同的方法 } } //测试 $strategy=new Strategy(); $strategy->way(new Walk); //走着去 $strategy->way(new Bus); // 坐车去

你可能感兴趣的:(设计模式)