博主信息
博文 55
粉丝 0
评论 0
访问量 38611
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
5月9日作业
老专的博客
原创
645人浏览过

5月9日作业

代码;

1.apple.php

实例

<?php 
/**
 * 单例模式:一个苹果类仅允许创建一个实例
 
 */

class Apple
{
	
	//必须先声明一个静态私有属性:用来保存当前苹果类的实例
	private static $guoguang = null;

	//保存用户的自定义苹果参数
	private $attr = [];

	//构造器私有化:禁止从类外部实例化
	private function __construct(){}

	//克隆方法私有化:禁止从外部克隆对象
	private function __clone(){}

        //因为用静态属性返回类实例,而只能在静态方法使用静态属性
        //所以必须创建一个静态方法来生成当前类的唯一实例
	public static function getGuoguang()
	{
            //检测当前类属性$guoguang是否已经保存了当前类的实例
            if (self::$guoguang == null) {
                //如果没有,则创建当前类的实例
                self::$guoguang = new self();
            }
            
            //如果已经有了当前类实例,就直接返回,不要重复创建类实例
            return self::$guoguang;
	}

	//设置配置项
	public function set($name, $value)
	{
		$this->setting[$name] = $value;
	}

	//读取配置项
	public function get($name)
	{
		return $this->setting[$name];
	}
}

//实例化Config类
$obj1 = Apple::getGuoguang();
$obj2 = Apple::getGuoguang();

var_dump($obj1);
echo '<hr>';
var_dump($obj2);
$obj1->set('山东','胶州半岛');
echo '<hr>';
echo $obj1->get('山东');

运行实例 »

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

2.company.php

实例

<?php

/* 
 * 工厂模式:用于创建多种类型的多个实例对象
 */

//声明公司类
class Company
{
    //声明静态方法company,根据公司经营不同,创建不同公司类的实例
    public static function create($type,array $modle=[])
    {
        //检测形状?
        switch ($type) {
            //长方形
            case 'trade':
                return new Trade($modle[0],$modle[1]);
                break;
            
            //三角形
            case 'service':
                return new Service($modle[0],$modle[1]);
                break;        
        }
    }
}

//声明贸易类
class Trade
{
    private $pc;  //电脑
    private $mobile; //手机
    public function __construct($pc,$mobile)
    {
        $this->pc = $pc;
        $this->mobile = $mobile;
    }
    
    //电脑、手机总价
    public function tprice()
    {
        return $this->pc+$this->mobile;
    }
}

//声明服务类
class service
{
    private $repair;  //维修
    private $replace;  //更换
    public function __construct($repair,$replace)
    {
        $this->repair = $repair;
        $this->replace = $replace;
    }
    
    //服务类总价
    public function  sprice()
    {
        return $this->repair+$this->replace;
    }
}

//使用静态方法来实例贸易类,而不是用传统的new 关键字
//并根据类型参数的不同,来实例化不同的类,生成不同的对象
$trade = Company::create('trade',[2100,3500]);
echo '电脑和手机的总价是:'.$trade->tprice();

echo '<hr>';

$service = Company::create('service',[120,260]);
echo '维修和更换的总价是:'.$service->sprice();

运行实例 »

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


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学