标签:style blog http color io 使用 java ar strong
杂谈:
如果一个类里的方法都是静态的,那么就没有必要创建对象,为了不让其他程序创建对象,就可以把当前类的构造函数私有化。
class MAN { private MAN() { } }
3.定义一个共有的方法将创建的对象返回
import java.util.Scanner; class MAN { private static MAN jo = new MAN();//第二步 //不共有,为了可控 private int x = 5; private MAN()//第一步 { } public static MAN Creat (String key) //第三步 { if(key=="stdio")//正确就给予对象使用,否则不 return jo; return null; } void show() { System.out.println("ASDf"); } } public class Main { public static void main (String[] args) { //MAN SS = MAN.Creat(); String key = "stdio"; MAN s = MAN.Creat(key); } }
单例设计的第一种模式
//饿汉式
import java.util.Scanner; class Test { private static Test jo = new Test();//第二步,//类一加载,对象就存在 //不共有,为了可控 private int num;; private Test()//第一步 { } public static Test Creat (String key) //第三步 { if(key=="stdio")//正确就给予对象使用,否则不 return jo; return null; } public void set(int num) { this.num = num; } public int get() { return num; } void show() { System.out.println("ASDf"); } } public class Main { public static void main (String[] args) { String key = "stdio"; Test s1 = Test.Creat(key); Test s2 = Test.Creat(key); System.out.println(s1==s2); s1.set(10); s2.set(20); System.out.println(s1.get()+" "+s2.get());//20 20,因为只有一个对象 } }
单例设计模式的另一表现:
//懒汉式,一开始不做,真正用的时候才做,特点:延迟加载模式
class Test { private static Test s = null;//类加载进来,只有调用了Creat方法时,且符合创建条件时,才会创建对象 //也就是单例设计模式,延迟加载模式,一般考察点 private int num;; private Test() { } public static Test Creat (String key) { if(key=="stdio" && s==null) s = new Test();//如果符合就给予对象使用 return s; } public void set(int num) { this.num = num; } public int get() { return num; } void show() { System.out.println("ASDf"); } } public class Main { public static void main (String[] args) { String key = "stdio"; Test s1 = Test.Creat(key); Test s2 = Test.Creat(key); System.out.println(s1==s2); } }
PS:懒汉式存在一些隐患,如果被多线程技术所操纵时,并发访问,有可能导致无法保证对象的唯一性,当改到保证唯一性时,效率会降低
面试时,一般会面试 懒汉式
开发时,用 饿汉式
标签:style blog http color io 使用 java ar strong
原文地址:http://blog.csdn.net/wjw0130/article/details/39274195