一、工厂模式:个人总结
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);
}
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;
优点:只能创建一个对象,可节省内存资源