博客列表 >5月9日作业

5月9日作业

老专的博客
老专的博客原创
2018年05月10日 17:31:02515浏览

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议