一. 前言
java设计模式: 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式
单例模式: 就是一个类只能创造一个实例
分懒汉模式与饿汉模式
二. 懒汉模式
package staticTest;
public class Person {
//要实现只能new一个实例
/*1.私有的构造方法(自己可以创建实例)
*2.实例用static修饰,保证只能自己创建一个实例
*3.外界不能实例对象就不能调用实例,所以写个方法返回该实例
*4.懒汉模式:只有在需要该实例时(调用方法),该实例才会被创建(方法也是静态的,保证外部可以通过类名获取到)
*/
//1.私有构造器
private Person() {}
//2.静态变量
private static Person p;
//3.返回唯一的实例
public static Person getInstance() {
//p不为空代表已经创建实例了就不用创建了
if(p == null) {
p = new Person();
}
return p;
}
public static void main(String[] args) {
}
}
//测试
package staticTest;
public class Test123 {
public static void main(String[] args) {
new Person();//报错
Person.getInstance();//用方法来获取实例对象
}
}
三.饿汉模式
package staticTest;
public class Person1 {
//饿汉模式同理,与懒汉模式区别
/*
* 懒汉模式是调用方法的时候才会创建实例
* 饿汉模式的实例一直存在于类结构中,占用资源
*/
//1.私有的构造方法
private Person1() {}
//2.静态实例
private static Person1 person = new Person1();
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//3.返回实例的方法
public static Person1 getInstance() {
return person;
}
public static void main(String[] args) {
}
}
//测试
package staticTest;
public class Test123 {
public static void main(String[] args) {
Person1.getInstance().getName();//用方法来获取实例对象
}
}