1.单例模式 保证一个类只有一个实例。
<?php
header("Content-Type:text/html;charset=utf-8");
//单例模式
class danli {
private $name;
//私有化构造方法
private function __construct(){
}
static public $instance;
//静态方法 返回当前实例
static public function getinstance(){
if(!self::$instance){
self::$instance = new self();
}
return self::$instance;
}
public function setname($n){
$this->name = $n;
}
public function getname(){
echo $this->name;
}
}
$a = danli::getinstance();
$a->setname('lisan');
$a->setname('李三');
$a->getname();
//结果 打印 李三
$b = danli::getinstance();
$b->getname();
//结果 打印 李三
2.注册模式 解决全局共享和交换对象,创建好的对象,注册到全局可使用的数组之中;
<?php
class test {
function say() {
echo 'test.class say haha';
}
}
class register{
protected static $projects;
function set($alias, $project){
self::$projects[$alias] = $project;
}
static function get($alias){
return self::$projects[$alias];
}
function _unset($alias){
unset(self::$projects[$alias]);
}
}
$bb = new register();
$bb->set('test',new test());
$cc = $bb::get('test');
$cc->say();
//打印 结果 test.class say haha
3.工厂模式 常用来替代多次使用new的情况
<?php
class action{
function say();
}
class talk extends action{
function say(){
echo 'I can bbb~';
}
}
class eat extends action{
function say(){
echo 'I can eat eat~';
}
}
class factory{
static function createTalk(){
return new talk();
}
static function createEat(){
return new eat();
}
}
$eat = factory::createEat();
$talk = factory::createTalk();
$eat->say();
$talk->say();
//结果打印
// I can eat eat~ I can bbb~