博主信息
博文 46
粉丝 3
评论 1
访问量 40843
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
509常见的三种设计模式
吃不起土的少年的博客
原创
1023人浏览过

实例

单例

<?php
/**
 * Created by PhpStorm.
 * User: 金超
 * Date: 2018/5/11
 * Time: 15:58
 */
class config{
//    声明一个私有属性 保存当前实例
 private  static $data=null;
 private  $method=[];
 //将构造器,克隆私有化
    private  function  __construct()
    {
    }
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }

//    创造唯一实例
    public static function first()
    {
        if(self::$data==null){
            self::$data=new self();
        }
        return self::$data;
    }
    //设置配置项
    public function set($index,$value)
    {
        $this->method[$index]=$value;
    }
    public  function  get($index)
    {
        return $this->method[$index];
    }


}
$test1=config::first();
$test2=config::first();

echo'<pre>';
var_dump($test1,$test2);
echo'<hr>';
$test2->set('kim','25');
echo $test2->get('kim');

运行实例 »

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

工厂模式

实例

<?php
/**
 * Created by PhpStorm.
 * User: 金超
 * Date: 2018/5/11
 * Time: 16:25
 */
class band{
    public static function  create($level,array $size=[])
    {
     //检查level
        switch ($level)
        {
            //low
            case'low';
            return new Low($size[0],$size[1]);
            break;
            case 'middle';
            return new Middle($size[0],$size[1]);
            case 'high';
                return new high($size[0],$size[1]);
        }
    }
}
class Low{
    private $height;
    private $width;
    public function __construct($height,$width)
    {
        $this->height=$height;
        $this->width=$width;
    }
    public function price()
    {
        return($this->height*$this->width)*1.3.'元';

    }
}
class Middle{
    private $height;
    private $width;
    public function __construct($height,$width)
    {
        $this->height=$height;
        $this->width=$width;
    }
    public function price()
    {
        return($this->height*$this->width)*2.7.'元';

    }
}
class High{
    private $height;
    private $width;
    public function __construct($height,$width)
    {
        $this->height=$height;
        $this->width=$width;
    }
    public function price()
    {
        return($this->height*$this->width)*3.68.'元';

    }
}
$Low=band::create('low',[10,38]);
echo'品级为low,长宽为[10,38]的价格为'.$Low->price();
echo'<hr>';
$Middle=band::create('middle',[10,38]);
echo'品级为middle,长宽为[17,29]的价格为'.$Middle->price();
echo'<hr>';
$High=band::create('high',[10,38]);
echo'品级为high,长宽为[9,11]的价格为'.$High->price();

运行实例 »

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

注册树

实例

<?php
/**
 * Created by PhpStorm.
 * User: 金超
 * Date: 2018/5/11
 * Time: 16:42
 */
class planA{};
class planB{};
class planC{};

class Register //声明对象注册树类
{    //静态属性中保存着所有已经挂载到树上的对象
    public static $plans=[];
    //将对象挂载到树上
    public static function set($index,$plan)
    {
            self::$plans[$index]=$plan;
    }
    //取出对象使用
    public static function get($index)
    {
        return self::$plans[$index];
    }
    //销毁无效的对象
    public static function del($index)
    {
        unset(self::$plans[$index]);
    }
}

//将三个类实例并挂到树上
Register::set('planA',new planA());
Register::set('planB',new planB());
Register::set('planC',new planC());

//检查是否上树
echo'<pre>';
var_dump(Register::$plans);
echo '<hr>';

//删除planA 并查看结果
Register::del('planA');
var_dump(Register::get('planA'));

运行实例 »

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


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学