设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。
1. 单例模式
1.1 饿汉式
- 构造器私有化
- 类的内部创建对象
- 向外暴露一个静态的公共方法
- 代码实现
public class code3 {
public static void main(String[] args) {
GirlFriend instance = GirlFriend.getInstance();
System.out.println(instance);
}
}
class GirlFriend{
private String name;
private static GirlFriend gf = new GirlFriend("xhh");
// 保证只能创建一个GirlFriend对象
// 1. 构造器私有化
// 2. 再类的内部直接创建
// 3. 提供一个公共的static方法,返回gf对象
private GirlFriend(String name) {
this.name = name;
}
public static GirlFriend getInstance(){
return gf;
}
@Override
public String toString() {
return "GirlFriend{" +
"name='" + name + '\'' +
'}';
}
}
1.2 懒汉式
class Cats{
private String name;
private static Cats cat;
private Cats(String name) {
this.name = name;
}
public static Cats getInstance(){
if(cat == null){
cat = new Cats("tom");
}
return cat;
}
@Override
public String toString() {
return "Cats{" +
"name='" + name + '\'' +
'}';
}
}
1.3 小结 饿汉式和懒汉式的区别
- 饿汉式是在类加载就创建了对象实例,懒汉式是在使用才创建。
- 饿汉式不存在线程安全问题,懒汉式存在线程安全。
- 饿汉式存在浪费资源的可能,懒汉式不存在。