java----设计模式
作者:互联网
单例设计模式:
1、饿汉式
public class Demo { public static void main(String[] args){ Singleton1 singleton1 = Singleton1.getSingleton1(); //通过类调用接口 singleton1.print(); } } class Singleton1{ private Singleton1(){}; //将构造方法私有化,外部不能new对象 private static Singleton1 singlenton1 = new Singleton1(); //使用静态存储方式,只存一个对象,当类被加载时,singleton1对象就被创建,一直放在内存中,直到程序结束; public static Singleton1 getSingleton1(){ //将getSingleton1()方法设置为静态方法,让类可以调用,返回实例 return singlenton1; } public void print(){ System.out.println("测试"); } }
2、懒汉式(优先考虑)
public class Demo { public static void main(String[] args){ Singleton1 singleton1 = Singleton1.getSingleton1(); //通过类调用接口 singleton1.print(); } } class Singleton1{ private Singleton1(){}; //将构造方法私有化,外部不能new对象 private static Singleton1 singleton1; //声明一个静态的实例,只存一次 public static Singleton1 getSingleton1(){ if(singleton1==null){ singleton1 = new Singleton1(); //创建实例,在getSingleton()方法调用时创建,程序结束后释放,多线程存在问题 } return singleton1; } public void print(){ System.out.println("测试"); } }
补充:通过使用构造方法私有化,加静态方法代替单例,例如工具类中的Math
不需要创建对象,静态方法一直加载在内存中,直到程序退出
public class Demo { public static void main(String[] args){ Singleton1.fun1(); //直接通过类调用方法 } } class Singleton1{ private Singleton1(){}; //将构造方法私有化,外部不能new对象 public static void fun1(){ System.out.println("方法一"); } public static void fun2(){ System.out.println("方法二"); } public static void fun3(){ System.out.println("方法三"); } }
单例和使用静态方法代替单例对比
1、使用单例,当执行方法时,如果有定义的变量,方法进栈,执行完毕后,出栈,变量销毁,优点:省内存,缺点:需要反复的调用,耗时
2、静态方法代替单例:优点:调用的时间快,缺点:一直加载内存中,不能被销毁,比较占内存
标签:java,void,public,static,单例,singleton1,设计模式,Singleton1 来源: https://www.cnblogs.com/yanxiaoge/p/10661004.html