自己对设计模式的理解:工厂模式和单例模式
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);
}
二、单利模式
实现单例的条件:三私一公
三私:私有化构造方法:不让外部创建对象
私有化克隆方法:不让外部克隆对象
私有静态属性:保存已经产生的对象
一公:公共静态方法:在类内部创建对象
实例:
优点:只能创建一个对象,可节省内存资源
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;
优点:只能创建一个对象,可节省内存资源
相关文章推荐
- 自己对设计模式的理解:工厂模式和单例模式
- 自己看着视频的理解:设计模式之abstractfactory模式(2)
- 设计模式的理解之(虚拟工厂模式)
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- 个人对于PHP设计模式之工厂模式的理解
- 设计模式: 自己手动写一个工厂模式(整合工厂方法模式和抽象工厂模式)
- 简单工厂设计模式(先拷贝来在理解)
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- 设计模式粗浅理解之一------简单工厂模式
- 设计模式理解(一)创建型——工厂、抽象工厂
- 设计模式之我的理解----创建型模式:工厂方法
- 深入理解JavaScript系列(28):设计模式之工厂模式
- 设计模式笔记1 - 简单工厂 和 工厂模式理解以及使用
- 设计模式原则(自己理解的)
- 设计模式之我的理解:构建型模式:抽象工厂
- 深入理解JavaScript系列(28):设计模式之工厂模式
- 深入理解c#设计模式之工厂模式
- 自己对于工厂模式的理解
- 设计模式之工厂模式(设计之道代码理解)
- 深入理解JavaScript系列(28):设计模式之工厂模式