面向对象编程之单态设计模式
来源:互联网 发布:fanuc pmc编程说明书 编辑:程序博客网 时间:2024/05/01 12:17
<?php
//单态(单例)设计模式:只让一个类只能创建一个对象
class person{
static $obj=null;
//要让一个类只能创建一个对象则得先让这个类不能创建对象,所以可以先将构造方法私有化;
private function __construct(){
}
//通过类调用静态方法的形式来创建对象,但是这样可以在类外部多次调用这个静态方法来创建多个对象也还不能达到我们的要求
static function getobj(){
//注意:在类中的方法中使用类中的静态属性时记得加self
if(is_null(self::$obj)){
//通过在类中的方法来创建对象
self::$obj=new self;
}
//如果多次调用该静态方式创建对象时,如果该对象已经存在,则直接返回之前已经创建完的对象拿过去使用,不用重新创建
else{
return self::$obj;
}
}
function __destruct(){
echo "##############<br>";
}
}
//第一次调用该静态方法创建对象时,因为$obj为空所以会创建一个新的对象;
person::getobj();
//多次调用该静态方法时,因为$obj已经存在所以不会重新创建对象
person::getobj();
person::getobj();
person::getobj();
person::getobj();
//经过多次调用该静态方法,只创建了一个对象,所以释放前只会执行一次析构方法,故只会输出一次################;
?>
//单态(单例)设计模式:只让一个类只能创建一个对象
class person{
static $obj=null;
//要让一个类只能创建一个对象则得先让这个类不能创建对象,所以可以先将构造方法私有化;
private function __construct(){
}
//通过类调用静态方法的形式来创建对象,但是这样可以在类外部多次调用这个静态方法来创建多个对象也还不能达到我们的要求
static function getobj(){
//注意:在类中的方法中使用类中的静态属性时记得加self
if(is_null(self::$obj)){
//通过在类中的方法来创建对象
self::$obj=new self;
}
//如果多次调用该静态方式创建对象时,如果该对象已经存在,则直接返回之前已经创建完的对象拿过去使用,不用重新创建
else{
return self::$obj;
}
}
function __destruct(){
echo "##############<br>";
}
}
//第一次调用该静态方法创建对象时,因为$obj为空所以会创建一个新的对象;
person::getobj();
//多次调用该静态方法时,因为$obj已经存在所以不会重新创建对象
person::getobj();
person::getobj();
person::getobj();
person::getobj();
//经过多次调用该静态方法,只创建了一个对象,所以释放前只会执行一次析构方法,故只会输出一次################;
?>
阅读全文
0 0
- 面向对象编程之单态设计模式
- 面向对象之单例设计模式
- 面向对象静态static应用之单态设计模式
- java学习笔记:面向对象编程之工具类的创建与单例设计模式
- 面向对象设计模式之Singleton单例模式
- 【面向对象】——设计模式之单例模式
- day03--面向对象--设计模式之单例模式
- 黑马程序员-面向对象之单例设计模式
- 面向对象之this、static和单例设计模式
- PHP 面向对象:设计模式之单…
- 面向对象设计模式--单例模式
- 十一 java面向对象程序设计(单态设计模式)
- PHP面向对象:单态设计模式(连接数据库)
- javaSE-面向对象-单例设计模式
- Java面向对象-单例设计模式
- Java面向对象,单例设计模式
- 面向对象-单例设计模式
- 面向对象 单例设计模式
- 51Nod X^2 Mod P
- python_函数(二)
- CART(Classification And Regression Tree)算法原理详解
- UDP协议
- 适配器模式
- 面向对象编程之单态设计模式
- Linux操作系统管理技术(三)
- 第一次用阿里云服务器,结果不能通过ip访问到云服务器
- Vue2.0的变化
- 链表的操作
- QJSON qt5.7.1+vs2015 WIN10编译
- [二分图匹配 线段树] Codeforces 573D Round #318 [RussianCodeCup Thanks-Round] (Div. 1) D. Bear and Cavalry
- Field获取java类中的成员变量名
- 阿里云ECS服务器Linux环境下配置php服务器(一)