Blogger Information
Blog 55
fans 0
comment 0
visits 30415
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
5月9日作业
老专的博客
Original
522 people have browsed it

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();

运行实例 »

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


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post