php - 单列模式 我所认知的和学习的
2018-02-27 本文已影响0人
破晓丨
在我学习php的时候是跟着公司的项目从中间做下去的,半知不解的,把差不多功能的地方找到然后复制过去,看到不懂的语法和函数就去百度,就这样迷迷糊糊的入了php的门。
在之后也对他产生了浓厚的兴趣,从基础的函数语法教程,到购买了一系列的项目教程逐渐做到现在可以承担一个项目的制作和有着自己的网站项目等。
其实中间所走的坑有很多,都是从弯路过的,总是觉的差点什么,直到现在也是这个感觉,所以学习是必须的,对于学习编程不管你是学什么语言,我最大的感触就是不断的去写代码,不断的去练......
以上是我对学习php 的一些感慨,相信这也是it们的共识!
下面我把我对php中 单列模式的概念做下总结,(这是我自己学习的总结):
单列模式在我用的最多的地方就是 对类的实例化,新建一个类,你需要用在很多地方,那你就需要不停的 new 这个类,这样的确是可以的,但是他有很大的一个缺点:
在不断的new这个类创建实例的同时,就会不断的消耗内存,增加过大的消耗。那么单列模式就解决了这个问题
原理:让这个类通过内部静态私有属性存储这个类的唯一实例,然后创建私有的构造方法,使这个类无法被实例化,最后定义静态方法来获取这个类唯一的实例,在外部访问此静态方法进行获取类实例。
代码:
<?php
class internet{
//定义一个私有的属性来存储类实例
private static $_instance = null;
// 把构造方法私有化 是外部无法 实例化这个类
private function __construct(){}
//为了防止魔术方法 clone 也需要私有化
private function __clone(){}
// 创建一个静态方法来获取类的唯一实例
public static function getInstance(){
//先判断定义的$_instance 是不是这个类的唯一实例
if(!(self::$_instance instanceof self)){
// 如果不是唯一实例就赋给他实例 new self() 代表这个类的本身
self::$_instance =new self();
}
//否则就直接返回这个静态属性
return self::$_instance;
}
}
这样就完成了一个单列模式,那么该怎么调用呢?
$inter = internet::getInstance();
这样就完成了单列模式的调用和使用。你学会了吗?