一:恶汉式单例设计模式
/* 单例设计模式
* ①私有化构造函数
* ②声明本类引用类型变量,并且该变量指向本类对象
* ③提供一个公共的方法获取本类对象。
*/
//恶汉式单例设计模式
public class Singleton1{
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat.getCatInstance().eat();
Cat cat1=Cat.getCatInstance();
Cat cat2=Cat.getCatInstance();
System.out.println("是同一个对象么"+(cat1==cat2));
}
}
class Cat{
private String name;
private int age;
private static Cat cat=new Cat();
private Cat(){
}
public static Cat getCatInstance(){
return cat;
}
public void eat(){
System.out.println("猫吃鱼!");
}
}
二:懒汉式单例设计模式
/*
* ①私有化构造函数
* ②声明本类的引用类型变量,但是不创建对象
* ③提供公共静态的方法获取本类的对象,获取是否创建了对象,如果创建了直接返回,否则创建再返回
*/
//懒汉式单例设计模式
//推荐恶汉式,因为懒汉式存在线程安全问题,不一定能保证内存中只有一个对象。
public class Singleton2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat1.getCatInstance().eat();
Cat1 cat1=Cat1.getCatInstance();
Cat1 cat2=Cat1.getCatInstance();
System.out.println("是同一个对象么"+(cat1==cat2));
}
}
class Cat1{
private static Cat1 cat;
private Cat1(){
}
public static Cat1 getCatInstance(){
if(cat==null){
cat=new Cat1();
}
return cat;
}
public void eat(){
System.out.println("猫吃鱼!");
}
}