Java基础之:单例模式
2021-03-11 09:29
标签:string int 没有 plain run 直接 返回 简单 饿汉 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式 。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。 对于一个类而言,外部只能获取其一个实例。 实现步骤: 1) 构造器私有化 2) 类的内部创建对象 3) 向外暴露一个静态的公共方法。getDog,getCat。 二者最不同的点在于对象声明的时机。饿汉模式是在类加载时,就声明并初始化一个对象作为静态变量,而懒汉模式是在类加载时声明一个静态属性,在外部需要实例时再创建对象。 饿汉式不存在线程安全问题,懒汉式存在线程安全问题。 饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题。 java.lang.Runtime就是经典的单例模式。 Java基础之:单例模式 标签:string int 没有 plain run 直接 返回 简单 饿汉 原文地址:https://www.cnblogs.com/SongHai/p/14128829.htmlJava基础之:单例模式
设计模式
单例模式
简单案例
package codeBlock;
?
public class Singleton {
?
public static void main(String[] args) {
Dog dog1 = Dog.getDog();
Dog dog2 = Dog.getDog();
System.out.println(dog1.getName()); //旺财
System.out.println(dog2.getName()); //旺财
System.out.println(dog2 == dog1); //true
Cat cat1 = Cat.getCat();
Cat cat2 = Cat.getCat();
System.out.println(cat1.getName()); //布偶
System.out.println(cat2.getName()); //布偶
System.out.println(cat2 == cat1); //true
}
?
}
?
//饿汉模式:声明一个对象,将其初始化并作为一个静态属性,在外部需要此类对象时,直接返回此对象。
class Dog{
private String name;
private static Dog dog = new Dog("旺财"); //静态属性,所以只有一个dog
private Dog(String name) {
this.name = name;
}
public static Dog getDog() {
return dog;
}
public String getName() {
return name;
}
?
public void setName(String name) {
this.name = name;
}
}
?
//懒汉模式:声明一个对象,并作为一个静态属性,在外部需要此类对象时将其初始化,再返回此对象。
class Cat{
private String name;
private static Cat cat ; //静态属性,所以只有一个cat
private Cat(String name) {
this.name = name;
}
public static Cat getCat() {
if(cat == null) {
cat = new Cat("布偶");
}
return cat;
}
public String getName() {
return name;
}
?
public void setName(String name) {
this.name = name;
}
}
饿汉模式与懒汉模式
上一篇:Spring中的Aware接口
下一篇:JAVA日报