补充一下.java设计模式有哪些?如何写一个线程安全的单例模式?(双重校验锁)