批改状态:合格
老师批语:
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();点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号