MxHanks' Blog

奔赴山海,保持热爱

0%

Java初级-设计模式,异常,线程,数据库,反射

Java初级-再次学习

设计模式

单例设计模式 (Singleton Pattern)

具体步骤:

  1. 构造器私有化 -> 防止直接 new
  2. 类的内部创建对象
  3. 向外暴露一个静态的公用方法 (getInstance)
  4. 代码实现

单例模式就时采取一定方法保证整个软件系统中,某个类只能存在一个对象实例,并且只提供一个取得对象实例的方法。

饿汉式

1
2
3
4
5
6
7
8
9
public class SingleTon1 {
private SingleTon1() {
// 构造器私有化
}
private static SingleTon1 instance = new SingleTon1();
public static SingleTon getInstance() {
return instance;
}
}

缺点:创建了没有用,造成资源浪费

懒汉式

1
2
3
4
5
6
7
8
9
10
11
12
public class SingleTon2 {
private SingleTon2() {
// 构造器私有化
}
private static SingleTon2 singleTon2;
public static SingleTon2 getInstance() {
if (SingleTon2 == null) {
singleTon2 = new SingleTon2();
}
return singleTon2;
}
}

总结:

  1. 二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,而懒汉式是在使用时才创建。
  2. 饿汉式不存在线程安全问题,懒汉式存在线程安全问题。
  3. 饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题。
  4. 在我们 javaSE 标准类中,java.lang.Runtime 就是经典的单例模式。

异常

Java 语言中,将程序执行中发生的不正常情况叫做异常。开发过程中的语法错误和逻辑错误不是异常

执行过程中发生的异常事件可以分为两类:

  1. Error:Java 虚拟机不能解决的严重问题,如 JVM 系统内部错误、资源耗尽等严重情况。比如 StackOverflowError 栈溢出,和 OOM(out of memory),Error是严重类型错误,程序会崩溃
  2. Exception:其它因编程错误和偶然的外在因素导致的一般性问题,可以用针对性的代码进行处理,例如空指针访问,试图读取不存在的文件,网络连接中断等,Exception 分为两大类:运行时异常和编译时异常

异常体系图