您的位置:首页 > 其它

自己对设计模式的理解:工厂模式和单例模式

2017-03-31 17:08 309 查看
一、工厂模式:个人总结
class  Factory

{
static function createObject($par)
{
if ($par == 1) {
$test1 = new Object1();
} elseif ($par == 2) {
$test2 = new Object2();
} else {
$test3 = new Object3();
}
}

}

// 在另外一个类中调用

class Test

{
//工厂模式,根据不同的参数,new出不同的对象
Factory::createObject(1);
Factory::createObject(2);
Factory::createObject(3);

}
二、单利模式
实现单例的条件:三私一公
   三私:私有化构造方法:不让外部创建对象

    私有化克隆方法:不让外部克隆对象

    私有静态属性:保存已经产生的对象

   一公:公共静态方法:在类内部创建对象
实例:

<?php

//单例模式:一个类只能创造一个对象

class Single{
//属性
private $name;
public static $counts = 0;

//定义一个静态属性来保存对象
private static $single;

//私有化构造方法
private function __construct($name){
$this->name = $name;
//计数
self::$counts++;
}

//私有化克隆方法
private function __clone(){
//计数
self::$counts++;
}

//静态方法,让类进入到类的内部进行实例化得到对象
public static function getInstance($name){
//判断对象是否已经存在,如果存在则直接返回原来对象,否则创造新对象
if(self::$single){
//对象已经存在,返回原来对象
}else{
//对象不存在
self::$single = new Single($name);
}

//返回对象
return self::$single;
}
}

//实例化
//$single = new Single('林志炫');

//访问类对象数量
//echo Single::$counts;

//得到对象
$single = Single::getInstance('马云');
var_dump($single);

//访问类对象数量
echo Single::$counts;

//得到对象
$single = Single::getInstance('马化腾');
var_dump($single);

//访问类对象数量
echo Single::$counts;


优点:只能创建一个对象,可节省内存资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息