科技成果转化网站建设方案,长沙中小企业做网站,三只松鼠口碑营销案例,小软件下载网站单例模式就是在整个程序运行的过程中#xff0c;这个类的实例化对象只有一个。
单例模式和private static 有密切的关系。
举一个例子#xff1a;
一个wife#xff0c;在法律允许的范围内#xff0c;只能有一个。
public class Wife{private static Wife wife null; //…单例模式就是在整个程序运行的过程中这个类的实例化对象只有一个。
单例模式和private static 有密切的关系。
举一个例子
一个wife在法律允许的范围内只能有一个。
public class Wife{private static Wife wife null; //定义一个wife放在那里然后给这个wife名字private Wife(){ //世俗和道德约束你目的就是不让你产生第二个wife,也就是private修饰的构造方法//一旦无参构造函数被重载了那么系统默认的由系统创建的无参构造函数就会被覆盖} public static Wife getInstance(){if(wife null){ //如果wife还没有定义那就定一个wife new Wife(); //这个是private修饰的构造方法} return wife ; }
}
//wife叫什么名字呀
public static void WifeInfo(){ System.out.println(我就是某某某....); }
} static
jvm在初始化时就会加载static变量。
让对象在运行的时候不用实例化(new)就可以使用。
因为在jvm初始化时已经实例化过了。
当前类永远都使用一个实例否则所有调用的地方需使用New去获取实例不够简洁。 private static : 私有常量。仅能作用于本类的静态代码块/静态成员方法中。 因为被static修饰的方法只能调用被static修饰的属性static修饰的属性不仅仅能被static修饰的方法调用所以如果一个私有属性会被静态方法调用的话那么就需要将这个
public static Wife getInstance() 方法 只能用 private static Wife wife /**
*
* husband是天天要面见wife今天见的wife和昨天的前天不一样那就出问题了
*/
SuppressWarnings(all)
public class Husband{ /*** param args*/public static void main(String[] args) { //第一天Wife wife1Wife .getInstance(); wife1.WifeInfo(); //第一天见的wife叫什么名字呢//第二天Wife wife2Wife .getInstance(); wife2.WifeInfo(); //第三天Wife wife3Wife .getInstance(); wife3.WifeInfo(); //三天见的wife都是同一个人荣幸吧}
} 但是存在线程不安全的情况就在判断静态变量是否为空的那个时候可能存在CPU的调度导致同一时间有两个进程都运行到了这个判断条件就会同时满足两个进程创建对象的要求就存在两个对象这不是单例模式的要求。
SuppressWarnings(all)
public class SingletonPattern { private static final SingletonPattern singletonPattern newSingletonPattern(); //限制住不能直接产生一个实例private SingletonPattern(){ } public synchronized static SingletonPattern getInstance(){ return singletonPattern; }
}