php 实例化 new 和getinstance

通常在单例模式下使用.getInstance()建立对象;但并非全部有私有构造方法,对外经过getInstance方法提供 实例的状况就是单例模式。函数

注:单例模式:一个类有且只有一个实例。 1,一个私有的构造器 2,一个私有的该类类型的变量 3,必须有一个共有的返回类型为该类类型的方法,用来返回这个惟一的变量对象

eg: public class Singleton{     private Singleton(){}    //private 只能在本身内部供本身去访问     private static Singleton instance=new Singleton();//在本身内部定义本身的一个实例     public static Singleton getInstance(){        内存

//此静态方法供外部直接访问 return instance;     } }get

判断Singelton一个类是不是单例模式:class

class Test{     public static void main(String args[]){ Singleton s1=Singleton.getInstance(); Singleton s2=Singleton.getInstance(); if(s1==s2) System.out.println("此类是单例模式"); else System.out.println("此类不是单例模式");     } }变量

GetInstance与new区别: new的使用:如Object object = new Object(),这时候,就必需要知道有第二个public的Object构造方法的 存在。object

GetInstance的使用:在主函数开始时调用,返回一个实例化对象,此对象是static的,在内存中保留着它 的引用,即内存中有一块区域专门用来存放静态方法和变量,能够直接使用,调用屡次返回同一个对象。引用

(1)对象使用以前经过getinstance获得,而不须要本身定义,用完以后不须要delete; (2)new 必定要生成一个新对象,分配内存;getInstance() 则不必定要再次建立,它能够把一个已存在的 引用给你使用,这在效能上优于new; (3) new建立后只能当次使用,而getInstance()能够跨栈区域使用,或者远程跨区域使用。因此getInstance() 一般是建立static静态实例方法的。方法

相关文章
相关标签/搜索