(1.12)java基础语法自述–类与对象—(单例模式,枚举类型)
一,单例模式
1,什么是单例模式?
- 单例模式又叫做 Singleton模式,指的是一个类,在一个JVM里,只有一个实例存在。
2.饿汉式单例模式
public class Books{
private Books(){}
private static Books h = new Books();
public static Books reading(){
return h;
}
public static void main(String[] args){
Books h1 = Books.reading();
Books h2 = Books.reading();
System.out.println(h1==h2);
}
}
3. 懒汉式单例模式
public class Books{
private Books(){}
private static Books h;
private static Books reading(){
if(null == h){
h = new Books();
}
return h;
}
}
4.分别在什么情况下使用该两种模式
- 饿汉式,是立即加载的方式,无论是否用到这个对象,都会加载(如果在构造方法里写了性能消耗较大,占时较久的代码,比如建立与数据库的连接,那么就会在启动的时候感觉稍微有些卡顿。)
- 懒汉式,是延迟加载的方式,在使用时才会加载对象,,,(使用懒汉式,在启动的时候,会感觉到比饿汉式略快,因为并没有做对象的实例化。 但是在第一次调用的时候,会进行实例化操作,感觉上就略慢。)
5.总结
- 什么是单例模式?
-
- 构造方法私有化
- 静态属性指向实例
- public static 的方法,返回指向第二步的静态属性
二,枚举类型
1. 预先定义的常量
- 枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量
public enum Reading{
SANTI1,SANTI2,SANTI3
}
public class Books{
public static void main(String[] args){
Reading h = Reading.SANTI2;
switch (h){
case SANTI1:
System.out.println("三体1");
break;
case SANTI2:
System.out.println("三体2");
break;
case SANTI3:
System.out.println("三体3");
break;
}
}
}
2. 使用枚举的好处
- 假设在使用switch时,不是使用enum,而是使用int,而int 的取值范围就不只是1-4了,有可能超出1-4之间的值,这样判断结果就会似是而非了,但是使用枚举就会牢牢锁定在四个值中。
3. 遍历枚举
- 借助增强型for循环,可以很方便的遍历一个枚举都有哪些常量
public enum Reading{
SANTI1,SANTI2,SANTI3
}
public class Books{
public static void main(String[] args){
for(Reading h:Reading.values()){
System.out.println(h);
}
}
}