一.java中的设计模式
单例模式是一种设计模式,就比如下棋的时候对于高手来说,每个人都会很多种棋谱,在比赛中按照棋谱的套路灵活应用,见招拆招。java中的设计模式就和棋谱一样,程序员按照棋谱来写代码能够保证下限。设计模式有很多种,之前有个大佬写了一本书有23种设计模式,不同的语言有不同的设计模式。对于新手来说最主要的是理解2种设计模式,单例模式和工产模式。
二.单例模式
单例模式是一种设计模式,用于确保一个类只能有一个实例,也就是只能new一次,并提供全局访问这个实例的方式。单例模式的基本思想是将类的实例化过程封装起来,使得整个程序中只有一个对象能够被创建。这个唯一的对象被称为单例对象,他可以被类的所有方法共享。
单例模式主要分为2种饿汉模式和懒汉模式。
一.饿汉模式
饿汉模式是在类加载的时候创建出实例
class Single{
private static Single single = new Single();
public static Single create(){
return single;
}
private Single(){
}
}
public class Test12 {
public static void main(String[] args) {
Single str1=Single.create();
Single str2 = Single.create();
System.out.println(str1==str2);
}
}
Singlel类带有static,类属性,由于每个类对象是单例的,类对象的属性(static),也就是单例的。代码的执行时机是在Single类被jvm加载的时候,Single类会在jvm第一次使用的时候加载。如果我们继续new对象会发生什么?
我们发现new对象的时候编译器报错,这是应为Single类的构造方法是私有的,出了该类则不能访问。那么一定不能访问吗?
尽管该类的构造方法是私有的,但是可以使用反射去访问,创造出多个实例。反射是属于非常规的编程手段,正常开发的时候,不应该或者慎用反射。滥用反射,会带来极大的风险,会让代码变的抽象难以维护。java也有其他方式实现单例模式不怕反射。
二.懒汉模式(非线程安全)
懒汉模式是第一次使用实例的时候就创建,能不创建就不创建。
class Si