单例模式
2015-09-03 12:00
351 查看
单例模式的必要性:
1. 目的:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
2. 要点:
1). 某一个类只能有一个实例;
2). 必须自行创建这个实例;
3). 必须自行向整个系统提供这个实例。
3. 作用:避免重复实例化,节省系统资源。例如在数据库操作方面,会大量存在数据库连接操作,单例类可以避免多次连接数据库而消耗资源,减轻对数据库服务器的压力
单例类的写法:三私一公二静态
1、私有的构造方法:防止类外被实例化,从而失去单例的意义。
2、私有克隆方法:防止传到类外的对象被克隆,从而无法保证对象的唯一。
3、私有静态的属性:私有的目的是防止这个属性在类外被修改。用来保存在本类中生成的唯一一个实例。 静态的目的是什么呢?之所以静态,是因为该属性要被在静态方法中调用。
4、共有的静态方法:这个方法是唯一将实例传输到类外使用的途径。子所以是公有的,是因为要被在类外调用。之所以静态,是因为单例类中的构造方法是私有的,没办法用对象调用该方法,而只有静态方法才不需要对象调用。
这个公有的静态方法必须有返回值,将当前类中私有静态属性返回。而这个静态属性中已经存储了那个唯一的实例化后的对象。
1. 目的:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
2. 要点:
1). 某一个类只能有一个实例;
2). 必须自行创建这个实例;
3). 必须自行向整个系统提供这个实例。
3. 作用:避免重复实例化,节省系统资源。例如在数据库操作方面,会大量存在数据库连接操作,单例类可以避免多次连接数据库而消耗资源,减轻对数据库服务器的压力
单例类的写法:三私一公二静态
1、私有的构造方法:防止类外被实例化,从而失去单例的意义。
2、私有克隆方法:防止传到类外的对象被克隆,从而无法保证对象的唯一。
3、私有静态的属性:私有的目的是防止这个属性在类外被修改。用来保存在本类中生成的唯一一个实例。 静态的目的是什么呢?之所以静态,是因为该属性要被在静态方法中调用。
4、共有的静态方法:这个方法是唯一将实例传输到类外使用的途径。子所以是公有的,是因为要被在类外调用。之所以静态,是因为单例类中的构造方法是私有的,没办法用对象调用该方法,而只有静态方法才不需要对象调用。
这个公有的静态方法必须有返回值,将当前类中私有静态属性返回。而这个静态属性中已经存储了那个唯一的实例化后的对象。
class Singleton { private static $instance; private function __construct(){} private function __clone(){} public static function getInstance() { if(!(self::$instance instanceof self)) { self::$instance = new self(); } return self::$instance; } }
相关文章推荐
- mysql 杀掉(kill) lock进程脚本
- MIS系统中的权限设计
- gcc/g++动态链接库和静态库的链接顺序
- 在Win10 Mobile越狱解锁部署的基础 公布替换字体教程
- CentOS安装JAVA
- 海量数据问题
- IE10-浏览器实现placeholder效果
- 百钱百鸡
- 将同一用户的某一字段的所有内容拼接在一起
- 【HDU1083】【最大二分匹配】
- SEO生命周期,别做死了都不知道!
- 设计模式之依赖倒置原则
- Win10 Mobile越狱解锁部署:一款替换字体的应用程序出现
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Bash 里的转义序列
- 设计模式之:适配器模式
- 公有ip地址 和内网ip地址
- 将相机/相册的图片保存到本地沙盒
- C# Excel 为图表添加趋势线、误差线
- 【android】 如何把gif图片下载到本地