加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP单例模式与工场模式详解

发布时间:2021-03-06 23:48:39 所属栏目:编程 来源:网络整理
导读:一、单例模式又称为职责模式,它用来在措施中建设一个单一成果的会见点,普通地说就是实例化出来的工具是独一的。全部的单例模式至少拥有以下三种民众元素: 1. 它们必需拥有一个结构函数,而且必需被标志为private2. 它们拥有一个生涯类的实例的静态成员变

一、单例模式又称为职责模式,它用来在措施中建设一个单一成果的会见点,普通地说就是实例化出来的工具是独一的。 全部的单例模式至少拥有以下三种民众元素:

1. 它们必需拥有一个结构函数,而且必需被标志为private 2. 它们拥有一个生涯类的实例的静态成员变量 3. 它们拥有一个会见这个实例的民众的静态要领

单例类不能再其余类中直接实例化,只能被其自身实例化。它不会建设实例副本,而是会向单例类内部存储的实例返回一个引用。

单例模式实例

}

static public $instance;//声明一个静态变量(生涯在类中独一的一个实例)
static public function getinstance(){//声明一个getinstance()静态要领,用于检测是否有实例工具
if(!self::$instance) self::$instance = new self();
return self::$instance;
}

public function setname($n){ //给变量$name赋值
      $this->name = $n;
   }
public function getname(){ //取变量$name的值
      return $this->name;
   }
}

$a = Single::getinstance();
$b = Single::getinstance();
$a->setname('hello world');
$b->setname('good morning');
echo $a->getname();//good morning
echo $b->getname();//good morning
?>

二、工场模式就是一种类,具有为您建设工具的某些要领,这样就可以行使工场类建设工具,而不直接行使new。

这样假如想变动建设的工具范例,只需变动该工场即可。

a = 20; $ope->b = 10; echo $ope->opera();

工场模式实例

interface FetchName {//建设一个接口
public function getname();//
}

class A implements FetchName{
private $name = "AAAAA";
public function getname(){
      return $this->name;
    }
}

class C implements FetchName{
private $name = "CCCCC";
public function getname(){
      return $this->name;
    }
}
class B implements FetchName{
private $name = "BBBBB";
public function getname(){
      return $this->name;
    }
}

class D implements FetchName{
private $name = "DDDDD";
public function getname(){
      return $this->name;
    }
}

$o = Factory::fac(6);//挪用工场类中的要领
if($o instanceof FetchName){
echo $o->getname();//DDDDD
}

$p=Factory::fac(3);
echo $p->getname();//CCCCC
?>

以上就是本文的所有内容,但愿对各人的进修有所辅佐,也但愿各人多多支持编程之家。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读