博客列表 >单例,工厂,注册模式案例

单例,工厂,注册模式案例

清雨的博客
清雨的博客原创
2018年05月10日 08:49:26758浏览


实例

<?php
/**
 * Created by PhpStorm.
 * User: 清雨
 * Date: 2018/5/10
 * Time: 8:22
 */
class config
{
    private static $instance=null;
    private $setting=[];

    private function __construct()
    {

    }

    private function __clone()
    {
    }

    public static function getInstance(){
        if (self::$instance == null) {
            self::$instance=new self();
        }

        return self::$instance;
    }

    public function set($index,$value){
        $this->setting[$index]=$value;
    }

    public function get($index){
        return $this->setting[$index];
    }
}
//$obj1,$obj2 同一个对象
$obj1=config::getInstance();
$obj2=config::getInstance();

var_dump($obj1,$obj2);

$obj1->set('pass','root');
echo $obj1->get('pass');

运行实例 »

点击 "运行实例" 按钮查看在线实例


实例

<?php
/**
 * Created by PhpStorm.
 * User: 清雨
 * Date: 2018/5/10
 * Time: 8:25
 * 工厂模式
 */
class Factory
{
    public static function create($type,$price){
        switch ($type){
            case 'lenovo':
                return new Lenovo($price);
                break;

            case 'xiaomi':
                return new Xiaomi($price);
                break;
        }
    }
}

class  Lenovo
{
    private $price;

    public function __construct($price)
    {
        $this->price=$price;
    }

    public function price(){
        return $this->price;
    }
}

class Xiaomi
{
    private $price;

    public function __construct($price)
    {
        $this->price=$price;
    }

    public function price(){
        return $this->price;
    }
}

$lenovo=Factory::create('lenovo',5000);
echo '联想:'.$lenovo->price();

echo '<hr>';

$xiaomi=Factory::create('xiaomi',3000);
echo '小米:'.$xiaomi->price();

运行实例 »

点击 "运行实例" 按钮查看在线实例


实例

<?php
/**
 * Created by PhpStorm.
 * User: 清雨
 * Date: 2018/5/10
 * Time: 8:29
 * 注册数
 */
class Demo1{}
class Demo2{}
class Demo3{}

class Registry
{
    public static $objs=[];

    public static function set($index,$obj){
        self::$objs[$index]=$obj;
    }

    public static function get($index){
        return self::$objs[$index];
    }

    public static function del($index){
        unset(self::$objs[$index]);
    }
}

//类实现注册到注册树
Registry::set('demo1',new Demo1());
Registry::set('demo2',new Demo2());
Registry::set('demo3',new Demo3());

var_dump(Registry::$objs);
echo '<hr>';

echo '<pre>';
print_r(Registry::$objs);

echo '<hr>';
var_dump(Registry::get('demo1'));

//del
echo '<hr>';
Registry::del('demo1');
var_dump(Registry::get('demo1'));

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议