Java进阶知识体系_单列模式设计 适合场景:一个类对外只能提供一个对象 设计步骤: 1,私有化 无参构造方法 2,静态私有化 成员变量 并调用私有化后的无参构造方法初始化 3,定义一个公共静态的方法,对外提供使用的获取对象的接口
1,饿汉式设计 饿汉式类设计
public class HungrySingLeton {
//饿汉式 单列模式编程,只能创建一个对象
//1,私有化 无参构造方法
private HungrySingLeton(){
};
//2,静态私有化 成员变量 并调用私有化后的无参构造方法初始化
private static HungrySingLeton instance = new HungrySingLeton();
//3,定义一个公共静态的方法,对外提供使用的接口
public static HungrySingLeton getInstance(){
return instance; //返回静态私有化的类成员对象
}
//4,定义需要具体实现的类行为
public void doSomething1(){
System.out.println("您好!");
}
}
饿汉式类测试
public class HungrySingLetonTest {
public static void main(String[] agrs) {
System.out.println("你好,main!");
//测试饿汉式编程,只能创建一个对象
HungrySingLeton hungrySingLeton1 = HungrySingLeton.getInstance();
System.out.println(hungrySingLeton1);
hungrySingLeton1.doSomething1();
//再次获取到一个对象,实质上hungrySingLeton2和hungrySingLeton1是同一个对象,指向的内存地址一致
HungrySingLeton hungrySingLeton2 = HungrySingLeton.getInstance();
System.out.println(hungrySingLeton2);
hungrySingLeton2.doSomething1();
}
}
饿汉式测试结果,获取到的两个对象实际上为同一个对象,指向同一个地址
2,懒汉式设计 懒汉式类设计
public class SluggardSingLeton {
//懒汉式 单列模式编程,只能创建一个对象
//1,私有化 无参构造方法
private SluggardSingLeton(){
};
//2,静态私有化 成员变量 ,先不要初始化
private static SluggardSingLeton instance;
//3,定义一个公共静态的方法,对外提供使用的接口
public static SluggardSingLeton getInstance(){
if(instance == null){
instance = new SluggardSingLeton();
}
return instance; //返回静态私有化的类成员对象
}
//4,定义需要具体实现的类行为
public void doSomething1(){
System.out.println("懒汉式,您好!");
}
}
懒汉式测试类设计
public class SluggardSingLetonTest {
public static void main(String[] agrs) {
System.out.println("你好,main!");
//测试饿汉式编程,只能创建一个对象
SluggardSingLeton sluggardSingLeton1 = SluggardSingLeton.getInstance();
System.out.println(sluggardSingLeton1);
sluggardSingLeton1.doSomething1();
//再次获取到一个对象,实质上sluggardSingLeton2和sluggardSingLeton1是同一个对象,指向的内存地址一致
SluggardSingLeton sluggardSingLeton2 = SluggardSingLeton.getInstance();
System.out.println(sluggardSingLeton2);
sluggardSingLeton2.doSomething1();
}
}
懒汉式测试结果,获取到的两个对象实际上为同一个对象,指向同一个地址
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/2104.html