1.单例模式:
1.1一个类只能有一个实例
实现步骤:私有化构造方法-->类内部创建对象-->创建对象公共方法-->只能通过类调此方法(设成static)
package com.atguigu.java;
/*
* 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。
* 23种设计模式。
*
* 单例的设计模式:
* 1.解决的问题:使得一个类只能够创建一个对象
* 2.如何实现?见如下四步
*
*/
//饿汉式(推荐)
public class TestSingleton {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
}
class Singleton {
// 1.私有化构造器,使得在类外部不能调用此构造器
private Singleton() {
}
// 2.在类的内部创建一个类的实例
private static Singleton instance = new Singleton();
// 3.私有化此对象,通过公共的方法来调用
// 4.此公共的方法,只能通过类来调用,因此设为static,同时类的实例也必须设为static声明的
public static Singleton getInstance() {
return instance;
}
}
package com.atguigu.java;
//懒汉式:存在安全性问题
public class TestSingleton1 {
public static void main(String[] args) {
Singleton1 s1 = Singleton1.getInstance();
Singleton1 s2 = Singleton1.getInstance();
System.out.println(s1 == s2);
}
}
class Singleton1 {
private Singleton1() {
}
private static Singleton1 instance = null;
public static Singleton1 getInstance() {
if (instance == null) {
instance = new Singleton1();
}
return instance;
}
}